使用USB-CDC库函数怎么读取一个字节?
STC_USB_LIBRARY 提供的函数只能读取多个字节,没见到有读取1字节的方法另外这个库都是封装成了lib,工具箱里提供的CDC例子里又不能实现不断电下载功能 @STCISP#
包括VID PID因为用了lib库 也没办法修改,这个lib库不能放出源码么?
能不能像新唐的51一样 有个 BSP包和例子,stc入门太难了。。。
没啥基础的情况下 新唐可以很快上手写东西,stc 折腾好久都不行
鱼和熊掌难兼得
用 avr 的片可以用 arduino,几乎不用啥基础都可以很容易的写东西。。。直接 Serial.read Serial.write
stc用的头疼。。。
超级简单的USB-CDC虚拟串口/就是串口 应用 及不停电下载-STC8H - USB:USB-CDC虚拟串口/就是串口,一箭双雕之USB转双串口,[鼠标+键盘]的HID复合设备 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)
不停电下载
IAP_CONTR = 0x60
使用USB-CDC库函数,从USB给MCU发几个字节,就收到几个字节
如果你想一个字节一个字节读取,发送时一个字节一个字节发送就可以
if (bUsbOutReady)
{
USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
usb_OUT_done();
}
if (bUsbOutReady) 判断条件里面就是收到数据,其中 OutNumber 是收到的字节数,UsbOutBuffer是接收数据存放的缓冲区。
如果 OutNumber = 1 只收到一个字节数据,就是UsbOutBuffer第一字节的内容。
使用USB CDC库进行通信已经是很简单的,几十行代码就能实现通信,不停电下载。
视频回放, 2023/7/3期, USB 零基础实战,CAN应用,STC32位8051实战宣讲会
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2990
这期视频一步步介绍了USB CDC库的使用,包括数据通信,不停电下载演示。
如果你想自己修改配置的话也可以,实验箱例程包,开天斧/屠龙刀例程包,一箭双雕USB转双串口例程包,里面都有一个例子“CDC(Communication Device Class)协议范例”,是完全开源的。
修改配置需要对USB协议比较熟悉,论坛也有相应的教学视频可以观看:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4526 乘风飞扬 发表于 2023-11-17 11:47
使用USB-CDC库函数,从USB给MCU发几个字节,就收到几个字节
如果你想一个字节一个字节读取,发送时一个字节 ...
电脑端是github开源的,我是基于avr闭源的功能,重写芯片代码
老外写的代码,发送是 A0 , A是命令 后面读到的是 地址,还会有 A200,如果是我自己写上位机肯定不这么搞
先读 A ,后面再读后续的,0 或者 其他值 happysoul 发表于 2023-11-17 13:54
电脑端是github开源的,我是基于avr闭源的功能,重写芯片代码
老外写的代码,发送是 A0 , A是命令 后面读 ...
如果对方是一串数据发送的,那么接收的也是一串数据。接收完再进行解码也是一样的。 可以,但很恶心。。。
就比如上位机要读取一个地址的数据发送3个字节 R 00 FF 的 hex数据 (R的hex表示读取,地址 0x00FF )
switch(接收的第一个字节)
case 'R':
读取第二个字节,左移8位 <<8 , 加上第三个字节
上面这个简单,还可以接受
举例 写数据发送65个字节 W000000.............. 正常情况是 读取一个字节 W ,后面读取64位的0
由于stc 只能收 64字节,所以第一包读取64,包含W和63个0,之后再读取一次1字节
没办法先读取1个字节,再读取64个字节(可以改程序,但是。。开源的程序大改后就要自己维护一套私有的代码)
用 lib库可以demo,或者基于现有收发规则开发上位机程序。对于已有上位机程序可能就需要各种大改造
是不是可以这样:接收缓冲大一点,数据接收完成了,再对接收数据进行 检索处理呢 机灵小老鼠 发表于 2024-7-14 13:58
是不是可以这样:接收缓冲大一点,数据接收完成了,再对接收数据进行 检索处理呢 ...
硬件缓冲区是64字节
页:
[1]
2