核心思路是让所有PWM通道共享同一个时基,避免独立计数器导致的相位差。实操上,推荐使用高级定时器(如TIM1/TIM8)的互补输出或同一定时器的多通道,并配置为PWM模式1,同时启用DMA的循环模式,将占空比数据按通道顺序写入一个数组,通过DMA突发传输到CCR寄存器。关键点:1)确保定时器初始化时,所有通道的CCER寄存器中CCxE位同时使能,且CCMRx的OCxM位一致;2)使用TIM_Cmd()启动定时器前,先配置好所有CCR值,避免启动瞬间的相位跳变;3)若必须用多个定时器,则需同步它们的时钟(如使用TIM_ClockSourceInternal或外部触发),并设置相同的PSC和ARR。另外,在DMA中断中更新数据时,建议用双缓冲或乒乓缓冲,防止更新中途产生占空比不一致。实测中,将PWM频率设为1kHz以上,人眼对相位差敏感度降低,可进一步缓解亮度不均。
mcuku 阿沐 · 2026-08-31