童雨竹
发表于 2025-10-10 07:53
串口DMA方式偶尔卡住,似乎中断没有再触发
串口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停止工作
页:
[1]