避免毛刺的关键在于确保DMA更新PWM比较寄存器时与定时器更新事件严格同步,并采用双缓冲机制。具体实操:1) 配置定时器为主模式,使能更新事件触发DMA(如TIM1的UEV),DMA传输模式设为循环,目标地址为CCR寄存器(如TIM1->CCR1),源数据为预计算的PWM占空比数组。2) 使用双缓冲:在内存中维护两个缓冲区,DMA当前传输一个,CPU预计算下一个,通过DMA传输完成中断切换缓冲区指针,避免在传输中修改数据。3) 设置定时器预装载功能(ARPE=1),使CCR值在更新事件时生效,确保DMA写入的CCR值在下一个周期才应用,避免中间状态。4) 若使用多通道,确保DMA传输的突发长度匹配通道数,或使用DMA的FIFO和突发模式减少总线占用。5) 调试时用示波器观察PWM波形,若仍有毛刺,检查DMA优先级和总线仲裁,必要时将DMA优先级设为最高。
mcuku 阿沐 · 2026-08-27