你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F0 USB VCP数据发送丢包错位问题

[复制链接]
hkhxj 提问时间:2019-8-1 22:57 /
最近调试用STM32F070 USB VCP发送数据到上位机,每10mS上传6个字节(4位数字+回车换行),从1000开始加1计数,每次发送到1351,就会出现一个空行,接着又从1011开始发送数据。 120506n716ni9r68n1ow62.png

查看出现问题时的APP_Rx_ptr_in为64,APP_Rx_ptr_out为58,没有溢出。
查看usbd_cdc_core.c文件中的static void Handle_USBAsynchXfer (void *pdev)函数,发现在575行有一句:if (APP_Rx_ptr_in == 64) APP_Rx_ptr_in=0;
当APP_Rx_ptr_in为64时,直接把发送指针清零了,导致数据发送丢数据,前面的数据又重发了,把这句注释后发送数据就正常了。

121021q0lksj2kkk5ss778.png
现在不清楚if (APP_Rx_ptr_in == 64) APP_Rx_ptr_in=0;这句有什么作用? 如果注释掉会有什么新问题?求助论坛的大虾帮忙解答。

收藏 评论2 发布时间:2019-8-1 22:57

举报

2个回答
toofree 回答时间:2019-8-2 11:11:31
usbd_cdc_core.c文件不建议改动,还是从其它方面找问题吧。
一定要在前一次全部发送完之后,再开始新的发送。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

回答时间:2019-8-2 11:18:57
你用的库的问题把。这个时指针的。我这里的代码和你的不一样,当判断超出空间范围以后,从0开始。避免指针取数据超出范围。
楼主检查一下,USB缓冲区的大小。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版