[STM32G0] 串口DMA方式偶尔卡住,似乎中断没有再触发

[复制链接]
432|17
童雨竹 发表于 2025-10-10 07:53 | 显示全部楼层 |阅读模式
串口DMA接收调试信息,跑一段时间后就停了,DMA寄存器值没动,像是中断丢了。但CPU还在跑,别的任务正常。怀疑是缓冲区边界没处理好,可就是找不到复现规律。
Clyde011 发表于 2025-10-10 07:57 | 显示全部楼层
也有可能是缓冲区覆盖导致DMA停止工作。
公羊子丹 发表于 2025-10-10 07:58 | 显示全部楼层
我以前也遇过,是环形缓冲区写指针没更新。
周半梅 发表于 2025-10-10 07:59 | 显示全部楼层
你看看是不是HAL库版本的问题,有旧bug。
帛灿灿 发表于 2025-10-10 08:00 | 显示全部楼层
有可能DMA半传输中断被关了。
 楼主| 童雨竹 发表于 2025-10-10 08:01 | 显示全部楼层
是不是发送端发了个0x00让状态机卡了?
万图 发表于 2025-10-10 08:02 | 显示全部楼层
我改成中断方式就再没出过问题。
Wordsworth 发表于 2025-10-10 08:03 | 显示全部楼层
DMA模式下缓存对齐挺关键的。
Bblythe 发表于 2025-10-10 08:03 | 显示全部楼层
你检查下空闲中断有没有开启。
Pulitzer 发表于 2025-10-10 08:04 | 显示全部楼层
我怀疑是USART IDLE标志没清干净。
Uriah 发表于 2025-10-10 08:05 | 显示全部楼层
如果你用FreeRTOS,可能被任务切换打断。
麻花油条 发表于 2025-10-11 16:02 | 显示全部楼层
中断标志未清除?
classroom 发表于 2025-10-11 18:03 | 显示全部楼层
如果DMA接收缓冲区为单缓冲区且未及时处理数据,新数据可能覆盖未读取的旧数据,导致 DMA 传输异常。
cr315 发表于 2025-10-11 17:04 | 显示全部楼层
DMA被意外禁用?
duo点 发表于 2025-10-11 19:04 | 显示全部楼层
检查DMA缓冲区配置,用双缓冲区或循环模式。
elephant00 发表于 2025-10-11 16:05 | 显示全部楼层
在DMA 接收完成中断中,必须清除中断标志,否则后续中断无法触发。
flycamelaaa 发表于 2025-10-11 21:06 | 显示全部楼层
检查DMA是否被意外禁用
jf101 发表于 2025-10-12 22:18 | 显示全部楼层
有可能是缓冲区覆盖导致DMA停止工作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

188

主题

6404

帖子

2

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