找回密码
 立即注册
查看: 428|回复: 5

【求助】STC8H8K64U USB CDC 怎么读64字节以上的数据?实现了128 但应该有更好的方法

[复制链接]
  • TA的每日心情
    无聊
    昨天 10:27
  • 签到天数: 122 天

    [LV.7]常住居民III

    3

    主题

    24

    回帖

    777

    积分

    高级会员

    积分
    777
    发表于 2023-7-19 16:20:52 | 显示全部楼层 |阅读模式
    本帖最后由 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

    【求助】STC8H8K64U USB CDC 怎么读取64字节以上的数据?实现了128 但感觉应该有更好-1.png

    代码粘贴后就变样了。。。看上面图片



    1. u8 pageBuffer[256];
    2. // 发送指定长度消息给上位机
    3. void usb_send(char cs[],int length)
    4. {
    5.   USB_SendData(cs,length);
    6.   usb_OUT_done();
    7. }
    8. //读取64字节
    9. void readBuffer()
    10. {
    11.     uint8_t i;
    12.     while(1){
    13.       if (bUsbOutReady){
    14.               if(OutNumber>0){
    15.                 for(i=0;i<OutNumber;i++){
    16.                   pageBuffer[i]=UsbOutBuffer[i];
    17.                   }
    18.                   usb_OUT_done();
    19.                   return;
    20.               }
    21.           }
    22.     }
    23. }
    24. // 读取 128 读取 2 次 64
    25. void readBuffer128()
    26. {
    27.     uint8_t i;
    28.     while(1){
    29.       if (bUsbOutReady){
    30.               if(OutNumber>0){
    31.                 for(i=0;i<OutNumber;i++){
    32.                   pageBuffer[i]=UsbOutBuffer[i];
    33.                   }
    34.                   //usb_OUT_done();
    35.                   // 通知上位机读取64字节完成
    36.                   usb_send("ok\r\n",4);
    37.                   break;
    38.               }
    39.           }
    40.     }
    41.     while(1){
    42.       if (bUsbOutReady){
    43.               if(OutNumber>0){
    44.                 for(i=0;i<OutNumber;i++){
    45.                   pageBuffer[i+64]=UsbOutBuffer[i];
    46.                   }
    47.                   usb_OUT_done();
    48.                   break;
    49.               }
    50.           }
    51.     }
    52. }
    复制代码





    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 166 天

    [LV.7]常住居民III

    10

    主题

    106

    回帖

    170

    积分

    注册会员

    积分
    170
    发表于 2023-7-20 16:43:58 | 显示全部楼层
    本帖最后由 wpppmlah 于 2023-7-20 16:45 编辑
    1. for (i = 0; i < OutNumber; i++) {
    2.                     pageBuffer[i + 64] = UsbOutBuffer;//这样也可以吗??不是应该: pageBuffer[i + 64] = UsbOutBuffer[i];吗????
    3.                 }
    复制代码

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 10:27
  • 签到天数: 122 天

    [LV.7]常住居民III

    3

    主题

    24

    回帖

    777

    积分

    高级会员

    积分
    777
     楼主| 发表于 2023-7-20 17:37:23 | 显示全部楼层

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

    有没有更好的写法? 总觉得现在写的方式太奇葩了
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-25 08:57
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    1

    主题

    5

    回帖

    49

    积分

    新手上路

    积分
    49
    发表于 2023-7-27 16:18:14 | 显示全部楼层
    用循环队列?
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    11

    主题

    331

    回帖

    886

    积分

    荣誉版主

    积分
    886
    发表于 2023-8-2 17:40:32 | 显示全部楼层
    本帖最后由 熊仔 于 2023-8-2 17:41 编辑

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

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 10:27
  • 签到天数: 122 天

    [LV.7]常住居民III

    3

    主题

    24

    回帖

    777

    积分

    高级会员

    积分
    777
     楼主| 发表于 2023-8-3 10:02:33 | 显示全部楼层
    熊仔 发表于 2023-8-2 17:40
    试一下我发的帖子的代码,可以增加缓冲区
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=3462&ex ...

    收到 谢谢了
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-18 18:26 , Processed in 0.065854 second(s), 52 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表