核心思路是让DMA在后台连续搬运数据,避免中断频繁介入。具体做法:1)将PWM比较值数组放入内存(如D2RAM),用DMA循环模式(Circular)直接搬运到TIMx->CCR,无需CPU干预;2)关键:将DMA中断优先级设为最低,且仅在传输完成(半传输/全传输)时触发,用于更新下一组波形参数,而非每个周期触发;3)若多路频率不同,建议每路独立定时器+DMA,避免共享中断;4)若必须共用,可改用定时器主从模式,用主定时器触发从定时器同步更新,减少DMA请求冲突;5)实测中,将DMA突发长度设为4或8,配合FIFO,可减少总线占用。最后,用逻辑分析仪验证抖动是否在允许范围(如±1%)。
mcuku 阿沐 · 2026-08-27