happysoul 发表于 2023-7-19 16:20:52

【求助】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:43:58

本帖最后由 wpppmlah 于 2023-7-20 16:45 编辑

for (i = 0; i < OutNumber; i++) {
                  pageBuffer = UsbOutBuffer;//这样也可以吗??不是应该: pageBuffer = UsbOutBuffer;吗????
                }

happysoul 发表于 2023-7-20 17:37:23

wpppmlah 发表于 2023-7-20 16:43


改了。。。不用代码方式引进来 【i】 就会被认成 斜线字体。。。真坑
用代码方式引入又会导致格式错乱,用文本编辑器整理了一次才显示正常。。。。

有没有更好的写法? 总觉得现在写的方式太奇葩了

rm543 发表于 2023-7-27 16:18:14

用循环队列?

熊仔 发表于 2023-8-2 17:40:32

本帖最后由 熊仔 于 2023-8-2 17:41 编辑

试一下我发的帖子的代码,可以增加缓冲区
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=3462&extra=page%3D2

happysoul 发表于 2023-8-3 10:02:33

熊仔 发表于 2023-8-2 17:40
试一下我发的帖子的代码,可以增加缓冲区
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=3462&ex ...

收到 谢谢了
页: [1]
查看完整版本: 【求助】STC8H8K64U USB CDC 怎么读64字节以上的数据?实现了128 但应该有更好的方法