核心思路:用定时器TRGO触发ADC规则组,ADC连续转换N次由DMA搬运到RAM缓冲,DMA传输完成中断里只做一次求均值(或让DMA循环+半满/全满双缓冲,主循环取平均)。具体配置:TIMx设为PWM或更新事件,主输出触发选TRGO=Update;ADC外部触发源选该TIM的TRGO,开启DMA循环模式,缓冲区长度=N(如16/32/64),ADC采样时间适当加长以匹配定时器频率。过采样可优先用STM32硬件过采样(ADC_CFGR2的OVSE+OVSR+OVSS),硬件自动累加右移,CPU零参与,DMA只搬最终结果。若芯片不支持硬件过采样,则软件在DMA完成回调中累加求平均,注意用volatile缓冲并保证DMA与CPU访问不冲突。外部中断只用于启动/停止或异常处理,不参与每次采样,避免CPU干预。
mcuku 阿沐 · 2026-10-22