找回密码
 立即注册
查看: 100|回复: 4

学习AI8051U过程中碰到usb_IN()函数的问题,请解答 | 可以了

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-01 19:17:52
已绑定手机

19

主题

208

回帖

492

积分

中级会员

积分
492
发表于 2025-3-13 17:29:13 | 显示全部楼层 |阅读模式
程序参见附件压缩包;
使用KC251编译,在main.c中,发现在连续调用函数 printf_cdc() 将调试信息上送PC的stc-isp中的串口调试助手的时候(其他独立的串口调试工具软件也一样),发生中间有部分调试信息丢失的情况; 但是,如果在 printf_cdc() 函数中 调用 usb_IN(ret); 之后增加 delay_ms(1); 就不会丢失上送的调试信息;




请问:
1.  上述现象正常吗?
2.  因为增加 delay_ms(1); 虽然不再丢失调试信息了,但是这是固定的死延时, 还有更好的方法吗? 如何才能查询 usb_IN(ret);真正执行完成了呢?



        

Test32B-AI8051U - 副本.zip

209.23 KB, 下载次数: 2

回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-13 17:33:00 | 显示全部楼层
关于您在使用AI8051U过程中遇到的`usb_IN()`函数问题,以下是专业解答:<br><br>1. **现象分析**:  <br>   在连续调用`printf_cdc()`函数时,调试信息丢失的现象是较为常见的。这通常是由于USB通信的缓冲区处理不及时或数据传输速率不匹配导致的。USB通信是一个异步过程,数据发送和接收之间存在一定的延迟。如果连续发送数据过快,可能导致缓冲区溢出或数据丢失。因此,增加`delay_ms(1)`可以缓解这一问题。<br><br>2. **解决方案**:  <br>   增加`delay_ms(1)`确实是一个简单有效的临时解决方案,但并非最优解。更专业的方法是优化USB通信机制。建议如下:<br>   - **检查缓冲区大小**:确保USB发送缓冲区足够大,以容纳连续发送的数据。<br>   - **使用流控制**:在发送数据前,检查USB是否处于就绪状态,避免数据丢失。<br>   - **优化发送逻辑**:可以考虑使用环形缓冲区或双缓冲技术,提高数据传输的可靠性。<br>   - **调整发送速率**:通过动态调整发送间隔,避免连续发送过快。<br><br>综上所述,增加`delay_ms(1)`虽然解决了问题,但建议进一步优化代码以提高系统的健壮性和效率。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2025-3-13 17:54:41 | 显示全部楼层
usb的H文件中有对应的标志位,可以通过判断对应标志位再来执行in和printf函数
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-01 19:17:52
已绑定手机

19

主题

208

回帖

492

积分

中级会员

积分
492
发表于 2025-3-13 19:09:27 | 显示全部楼层
extern BOOL bUsbInBusy;
是这个标志吧?
谢谢楼上的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:121
  • 最近打卡:2025-05-01 19:17:52
已绑定手机

19

主题

208

回帖

492

积分

中级会员

积分
492
发表于 2025-3-13 19:17:18 | 显示全部楼层
可以了,printf_cdc() 函数中更改一下就行:

//        if((DeviceState != DEVSTATE_CONFIGURED) || (bUsbInBusy)) return 0;
        if(DeviceState != DEVSTATE_CONFIGURED)        return 0;
        while(bUsbInBusy);                                        //等USB空闲
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 02:36 , Processed in 0.126503 second(s), 73 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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