【求助】STC8H8K64U USB CDC 怎么读64字节以上的数据?实现了128 但应该有更好的方法
本帖最后由 happysoul 于 2023-7-20 17:52 编辑看代码库里 UsbOutBuffer 的长度是 64,也就是说缓存只能读取 64
如果用库,只能拼2份读取方式,放到数组中
STC8H8K64U 64pin
问题:
1. 感觉这么写有点奇怪... 虽然能用,但 有没有更好的方法能读取 128字节、256字节?
2. 现在用的波特率是 115200,最高如果稳定的话能用到多少?
3. IRC 频率能用到多少?现在 USB-CDC 40MHz,选更高的时候 usb 就不认了
readBuffer64() 读取 64 字节
readBuffer128()读取 128 字节
// 使用的库是 STC_USB_LIBRARY_DEMO-20230630 / STC_CDC_QUERY_LIBRARY / stc8h_cdc_xdata_query_demo
代码粘贴后就变样了。。。看上面图片
u8 pageBuffer;
// 发送指定长度消息给上位机
void usb_send(char cs[],int length)
{
USB_SendData(cs,length);
usb_OUT_done();
}
//读取64字节
void readBuffer()
{
uint8_t i;
while(1){
if (bUsbOutReady){
if(OutNumber>0){
for(i=0;i<OutNumber;i++){
pageBuffer=UsbOutBuffer;
}
usb_OUT_done();
return;
}
}
}
}
// 读取 128 读取 2 次 64
void readBuffer128()
{
uint8_t i;
while(1){
if (bUsbOutReady){
if(OutNumber>0){
for(i=0;i<OutNumber;i++){
pageBuffer=UsbOutBuffer;
}
//usb_OUT_done();
// 通知上位机读取64字节完成
usb_send("ok\r\n",4);
break;
}
}
}
while(1){
if (bUsbOutReady){
if(OutNumber>0){
for(i=0;i<OutNumber;i++){
pageBuffer=UsbOutBuffer;
}
usb_OUT_done();
break;
}
}
}
}
本帖最后由 wpppmlah 于 2023-7-20 16:45 编辑
for (i = 0; i < OutNumber; i++) {
pageBuffer = UsbOutBuffer;//这样也可以吗??不是应该: pageBuffer = UsbOutBuffer;吗????
}
wpppmlah 发表于 2023-7-20 16:43
改了。。。不用代码方式引进来 【i】 就会被认成 斜线字体。。。真坑
用代码方式引入又会导致格式错乱,用文本编辑器整理了一次才显示正常。。。。
有没有更好的写法? 总觉得现在写的方式太奇葩了 用循环队列? 本帖最后由 熊仔 于 2023-8-2 17:41 编辑
试一下我发的帖子的代码,可以增加缓冲区
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=3462&extra=page%3D2
熊仔 发表于 2023-8-2 17:40
试一下我发的帖子的代码,可以增加缓冲区
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=3462&ex ...
收到 谢谢了
页:
[1]