在STM32定时器输入捕获测量高频PWM时,选择DMA还是中断的核心边界是CPU负载与实时性需求。中断方式适合低频(如<10kHz)且需要即时处理(如边沿触发逻辑)的场景,但高频下频繁中断会严重占用CPU,导致响应延迟或丢事件。DMA方式则通过硬件将捕获值直接搬运到内存,几乎不占CPU,适合高频(如>100kHz)或需要连续采样的场景,但需注意DMA缓冲区溢出和时序一致性。实操建议:先评估PWM频率和CPU其他任务负载。若频率>50kHz,优先用DMA+环形缓冲区,配合定时器更新事件(溢出)做周期校准;若频率较低且需实时控制,用中断并开启预装载(TIM_CCxPreloadControl)减少毛刺。另外,务必配置DMA为循环模式,并利用半传输/传输完成中断处理数据,避免丢失。边界不是绝对,可结合两者:用DMA采集,用中断处理关键事件(如PWM周期突变)。
mcuku 阿沐 · 2026-08-27