[STM32F4] USB虚拟串口在大数据传输时偶发死锁

[复制链接]
158|13
Bblythe 发表于 2025-10-16 07:56 | 显示全部楼层 |阅读模式
用CDC类做虚拟串口,连续传输几百KB后会卡死。PC端还显示连接着,但MCU不再响应。怀疑是FIFO溢出或者中断没及时清掉。HAL库版本是CubeF4 V1.27。
Clyde011 发表于 2025-10-16 08:00 | 显示全部楼层
感觉F4的USB堆栈有点脆弱,最好少改源码。
公羊子丹 发表于 2025-10-16 08:01 | 显示全部楼层
F4那代USB库确实不太稳定,建议用最新的中间件。
周半梅 发表于 2025-10-16 08:02 | 显示全部楼层
看看是不是传输缓冲区被写坏。
帛灿灿 发表于 2025-10-16 08:02 | 显示全部楼层
我用TinyUSB替换HAL后问题就没了。
童雨竹 发表于 2025-10-16 08:04 | 显示全部楼层
是不是中断优先级太低,USB被延迟处理?
万图 发表于 2025-10-16 08:05 | 显示全部楼层
可以试试加上流控,别一次发太多。
Wordsworth 发表于 2025-10-16 08:05 | 显示全部楼层
我也遇过,发太快会卡,PC还以为还连着。
 楼主| Bblythe 发表于 2025-10-16 08:06 | 显示全部楼层
USB OTG FS那块的FIFO一定要对齐配置。
Pulitzer 发表于 2025-10-16 08:07 | 显示全部楼层
抓包分析一下,看是IN还是OUT通道卡死。
Uriah 发表于 2025-10-16 08:08 | 显示全部楼层
有时候是缓存没flush,造成死循环。
甜心puppy 发表于 2025-10-16 16:31 | 显示全部楼层
FIFO溢出?
等凌晨日出 发表于 2025-10-16 17:31 | 显示全部楼层
中断未及时处理?
classroom 发表于 2025-10-16 16:32 | 显示全部楼层
HAL库可能有BUG
cr315 发表于 2025-10-16 19:33 | 显示全部楼层
USB DMA与其他外设共享总线,大数据传输时可能因总线争用导致延迟。
duo点 发表于 2025-10-16 20:33 | 显示全部楼层
在发送数据前,调用HAL_PCD_EP_GetRxCount或HAL_PCD_EP_IsStall检查FIFO是否可写。若FIFO满,可延迟重试或丢弃数据
elephant00 发表于 2025-10-16 16:34 | 显示全部楼层
是不是需要增大FIFO缓冲区
flycamelaaa 发表于 2025-10-16 23:35 | 显示全部楼层
缩短ISR执行时间,清除中断标志。
jcky001 发表于 2025-10-16 22:35 | 显示全部楼层
检查HAL库的USB中断处理函数是否正确清除中断标志
onlycook 发表于 2025-10-16 16:56 | 显示全部楼层
升级HAL库
您需要登录后才可以回帖 登录 | 注册

本版积分规则

174

主题

6213

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部