核心方案:使用ADC的DMA半传输/传输完成中断(HT/TC)配合双缓冲区(或环形缓冲区)的乒乓切换。配置DMA为循环模式,并启用HT和TC中断。在HT中断中处理前半缓冲区,TC中断中处理后半缓冲区,确保每次处理的数据块是连续且完整的。为避免错位,需确保ADC采样率与DMA传输速率匹配,且DMA配置为字(32位)对齐(若ADC为12位,可左对齐或右对齐但用32位存储)。同时,在中断中快速拷贝数据到用户缓冲区,避免覆盖。若多通道,需固定通道顺序(如规则序列),并在DMA缓冲区中按顺序排列,处理时按相同顺序解析。建议使用双缓冲(DMA的Memory-to-Memory模式或手动切换目标地址),或利用STM32的DMA双缓冲功能(如F4系列),交替使用两个缓冲区,确保数据同步。实操中,可在HT/TC中断中置标志位,主循环处理,避免中断内耗时操作。
mcuku 阿沐 · 2026-08-27