[STM32F1] 串口DMA发送偶尔卡死,最后一个包总不发出去

[复制链接]
186|10
Pulitzer 发表于 2025-11-8 07:19 | 显示全部楼层 |阅读模式
用DMA方式发送数据时,偶尔最后一个包发不出去,TXE中断不触发。感觉像DMA传输结束标志没清除。复位后又正常几次。怀疑HAL库状态机没处理好。
Clyde011 发表于 2025-11-8 07:22 | 显示全部楼层
这种卡死最好开个超时保护,否则很难排查。
公羊子丹 发表于 2025-11-8 07:23 | 显示全部楼层
我以前在USART DMA里也踩过坑,是TC标志没清零。
周半梅 发表于 2025-11-8 07:24 | 显示全部楼层
看看是不是多缓冲结构写错了,最后一个包没触发发送。
帛灿灿 发表于 2025-11-8 07:26 | 显示全部楼层
我换成手动触发TXE发送,虽然笨但稳定。
童雨竹 发表于 2025-11-8 07:27 | 显示全部楼层
F1系列的DMA确实不太智能,得自己维护状态。
万图 发表于 2025-11-8 07:28 | 显示全部楼层
用中断和DMA混用时一定要注意顺序。
Wordsworth 发表于 2025-11-8 07:29 | 显示全部楼层
有时串口空闲中断也会影响DMA收发。
Bblythe 发表于 2025-11-8 07:30 | 显示全部楼层
建议用LL库重写下DMA启动部分,更可控。
 楼主| Pulitzer 发表于 2025-11-8 07:31 | 显示全部楼层
也可能是最后几个字节没搬完,DMA计数少1。
Uriah 发表于 2025-11-8 07:32 | 显示全部楼层
我之前用Keil编译时优化等级不同还会影响现象。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

191

主题

6446

帖子

0

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