STM32H7的DMA双缓冲模式用于串口不定长接收时,需配置DMA为循环模式、双缓冲模式,并使能半传输和传输完成中断。常见坑点:1)半传输中断标志清除时机不当导致重复进入中断,应在中断中先清除标志再处理数据;2)双缓冲切换时,若未及时处理半传输数据,可能被新数据覆盖,建议半传输中断中仅置标志,主循环处理;3)串口空闲中断与DMA双缓冲结合时,需注意空闲中断触发时DMA可能正在切换缓冲区,应读取当前DMA剩余计数判断有效数据长度;4)H7的DMA缓存一致性问题,若使用D-Cache,需在DMA传输前后进行Cache无效化操作,否则数据可能不一致。实操建议:使用HAL库时,在半传输和传输完成回调中分别记录缓冲区指针和长度,结合串口空闲中断计算总接收长度,并确保处理速度跟上数据速率。