核心思路是让DMA中断处理尽量短,且用硬件机制保证数据连续性。首先,将PWM脉冲序列预先生成到内存缓冲区(如uint16_t数组),用DMA循环模式或正常模式配合定时器更新事件触发。为避免中断丢失,建议:1) 使用DMA的传输完成中断和半传输中断,在中断中只做标志位设置或缓冲区切换(双缓冲),不进行耗时操作;2) 若脉冲序列较长,采用乒乓缓冲(双缓冲),在DMA传输前半段时填充后半段数据,确保数据无缝衔接;3) 配置DMA为循环模式,配合定时器ARR自动重装,可减少中断频率;4) 若必须精确控制每路脉冲,可考虑用定时器主从模式或DMA突发传输,但更稳妥的是用硬件定时器级联。实操建议:先用逻辑分析仪验证时序,再优化中断优先级(DMA中断设为最高),并确保内存对齐(4字节对齐)以提升DMA效率。若中断仍丢失,可改用定时器更新事件触发DMA,而非依赖中断,这样即使中断延迟,硬件仍能自动搬运数据。
mcuku 阿沐 · 2026-08-27