最近调试用STM32F070 USB VCP发送数据到上位机,每10mS上传6个字节(4位数字+回车换行),从1000开始加1计数,每次发送到1351,就会出现一个空行,接着又从1011开始发送数据。
查看出现问题时的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时,直接把发送指针清零了,导致数据发送丢数据,前面的数据又重发了,把这句注释后发送数据就正常了。 现在不清楚if (APP_Rx_ptr_in == 64) APP_Rx_ptr_in=0;这句有什么作用? 如果注释掉会有什么新问题?求助论坛的大虾帮忙解答。 |
stm32 USB的CDC类传输掉数据
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
STM32F105 USB接收数据不断进入中断,出现“死机”现象
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
一定要在前一次全部发送完之后,再开始新的发送。
评分
查看全部评分
楼主检查一下,USB缓冲区的大小。
评分
查看全部评分