实现多路高精度PWM且不占用CPU,推荐使用DMA+定时器PWM模式,核心思路是:将每路PWM的占空比数据预先存入内存数组,通过DMA循环搬运到定时器的比较寄存器(如CCR),由硬件自动更新。具体做法:1)选择支持DMA请求的定时器(如STM32的TIM1/8高级定时器或TIM2-5通用定时器),配置PWM模式1或2;2)为每路PWM分配一个数组,存放不同占空比值(如0-1000对应0-100%),并设置DMA为循环模式,传输方向为内存到外设,数据宽度为半字(16位);3)在定时器更新事件中触发DMA,确保每个PWM周期更新一次CCR值;4)若需多路同步,可将多路CCR地址连续(如TIM1的CCR1-CCR4),用DMA的突发模式一次传输多路数据。注意:DMA传输需与PWM周期对齐,可通过设置DMA的传输完成中断(仅用于调试,不参与实时控制)或使用定时器主从模式实现硬件同步。实际调试时,先用逻辑分析仪验证占空比精度,再优化DMA优先级和缓冲区大小。此方案CPU仅需初始化配置,运行期零干预,适合电机控制、LED调光等场景。
mcuku 阿沐 · 2026-08-27