[STM32F1] 串口DMA模式偶尔丢最后一个字节,接收中断没触发

[复制链接]
114|10
Bblythe 发表于 2025-11-3 07:40 | 显示全部楼层 |阅读模式
UART配DMA接收固定长度包,偶尔会发现最后一个字节没进缓冲区,中断也没触发。怀疑是空闲中断触发太快或DMA计数没对齐。
Clyde011 发表于 2025-11-3 07:43 | 显示全部楼层
换成中断接收试试看能不能定位问题。
公羊子丹 发表于 2025-11-3 07:45 | 显示全部楼层
这问题挺常见的,空闲中断触发得太早了。
周半梅 发表于 2025-11-3 07:46 | 显示全部楼层
我改成双缓冲DMA后就没再丢。
帛灿灿 发表于 2025-11-3 07:46 | 显示全部楼层
检查一下USART IDLE标志清除的时机。
童雨竹 发表于 2025-11-3 07:48 | 显示全部楼层
可能是最后一字节来太快没触发事件。
万图 发表于 2025-11-3 07:49 | 显示全部楼层
F1的DMA机制比较老,不太可靠。
Wordsworth 发表于 2025-11-3 07:49 | 显示全部楼层
我试过在USART中断里强制停止DMA再重新启动。
 楼主| Bblythe 发表于 2025-11-3 07:51 | 显示全部楼层
你可以加个时间延迟检测,确认是不是末尾触发。
Pulitzer 发表于 2025-11-3 07:52 | 显示全部楼层
这问题我踩过坑,最后靠软件超时补。
Uriah 发表于 2025-11-3 07:53 | 显示全部楼层
也有可能是波特率太高,DMA响应不及时。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

185

主题

6373

帖子

1

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