定时器PWM输出有一种非对称PWM模式的输出形式,搭配中心对称计数方式可实现单个定时器输出两路相位差180°的PWM,而如果与其他定时器的PWM搭配,则相对其他定时器的PWM可以做出单路PWM 0-180°移相。
这里涉及到(Asymmetric PWM mode)的用法,在STM32的芯片手册中有介绍到。
通过上述说明可知,要想输出一个非对称PWM就需要用到两个PWM通道,且同一个定时器最多输出两个非对称PWM。而且需要用到中心对齐的计数方式,即定时器分别完成一次向上计数和一次向下计数才算作完成一次计数周期,这样称为中心对齐的计数方式。
通道1和通道2共同控制一个非对称PWM,通道3和通道4共同控制一个非对称PWM。在两个非对称PWM极性相同的情况下,CCR1和CCR3控制工作电平在向上计数时的起始点,CCR2和CCR4控制工作电平在向下计数时的结束点。
上述原理可知,由于使用到中心对称,占空比必定会大于等于50%。而且当占空比超过一定值时,移相角度无法固定,所以如果同一个定时器想要输出固定移向角度的PWM,那么其移向角度/360° + 占空比需要小于等于100%。
实现示例:
①在CubeMX中做出如下配置:
然后生成代码。
②在代码初始化中添加代码:
上述代码最终呈现的结果是输出两对相位差90°的50%占空比的互补PWM。