有人使用STM32F446做产品开发,用到TIM1的4个通道做PWM输出。具体使用是这样的,选择CHI1采样PMW模式做PMW输出。CH2、CH3、CH4采用比较切换模式结合DMA输出PWM波形,其中各通道的CCR值通过DMA基于比较事件周期性循环修改。
客户使用CubeMx做图形化配置后生成基于HAL库的工程,然后添加相关用户代码。
组织完用户代码后,不论代码顺序如何调整,发现总是最多只能启动2路使用OC切换模式结合DMA实现PWM输出的通道。
DMA缓冲区配置:
uint32_t tim_CCR2_Data[] = {8*9, 20*9};
uint32_t tim_CCR3_Data[] = {10*9, 20*9};
uint32_t tim_CCR4_Data[] = {17*9, 20*9};