童雨竹 发表于 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]
查看完整版本: 串口DMA方式偶尔卡住,似乎中断没有再触发