针对STM32F4多路ADC连续采样,核心是采用双缓冲(DMA循环模式+半传输/传输完成中断)或乒乓缓冲。建议:1)配置DMA为循环模式,使能半传输和传输完成中断,在中断中切换用户缓冲区指针,确保CPU处理数据时DMA写入另一块缓冲,避免覆盖。2)时间戳一致性:在DMA中断中读取TIM计数器(如TIM2/5)作为采样时刻,但需注意中断延迟,可启用DMA的传输完成事件触发定时器捕获,或使用ADC的注入组配合外部触发。实操:定义两个数组(如uint16_t buf[2][N]),在中断中更新当前有效缓冲区索引,并记录TIM值。若需更高精度,可启用DMA的FIFO和突发模式,减少总线竞争。最后,务必在中断中快速拷贝数据或使用临界区保护索引变量。
mcuku 阿沐 · 2026-08-27