1、通用定时器的PWM功能
STM32F103ZET6有4个通用定时器,分别是TIM2、TIM3、TIM4、TIM5。
通用定时器由一个可编程预分频器驱动的16位自动装载计数器构成。
通用定时器的很多功能与基本定时器是一样的,但是每个通用定时器都有4个IO口,可以用来测量输入信号的脉冲长度(输入捕获)或产生输出波形(输出比较和PWM)。
通用定时器可以用来输出PWM信号,每个通用定时器可以输出4路PWM信号。
2、通用定时器的输入/输出脚
每个通用定时器都具有4个输入/输出通道,即4个IO口,它们的对应关系如下图:
3、通用定时器的计数方式
通用定时器的框图如下:
图中TIMx_CH1、TIMx_CH2、TIMx_CH3、TIMx_CH4就是用来输出PWM的脚位,对应定时器的4个通道。
通用定时器的功能是在基本定时器功能上的扩展,定时部分跟基本定时器是差不多的,只是基本定时器只能是向上计数,而通用定时器既可以设置成向上计数、也可以设置成向下计数、或是设置成向上/向下计数。
通用定时器的向上计数模式跟基本定时器是一样的。
通用定时器的向下计数模式:
在向下计数模式中,计数器先从TIMx_ARR自动装载寄存器中获取计数初值,然后开始向下计数,当计数到0时产生中断并重新从TIMx_ARR自动装载寄存器中获取初值。
通用定时器的向上/向下计数模式:
在向上/向下计数模式中,计数器从0开始计数到TIMx_ARR-1的值后产生中断,然后向下计数到1并产生中断;然后再从0开始重新计数。
在向上/向下计数模式中,不能对TIMx_CR1寄存器中的DIR位赋值,DIR位由硬件更新,可以通过读取DIR位来确认当前是向上计数还是向下计数。
在向上/向下计数模式中,如果内部时钟分频因子为1,TIMx_ARR自动装载寄存器的值为0x06,那么定时器的的时序图如下:
从图中可以看到,计数器向上计数到0x05的时候产生了溢出中断,计数器向下计数到1的时候产生了溢出中断。
通用定时器通过TIMx_CR1控制寄存器的CMS[1:0]位和DIR位来控制定时器的计数方向。
4、通用定时器PWM输出的工作原理
通用定时器PWM输出的频率由TIMx_ARR自动重装载寄存器和TIMx_PSC预分频器寄存器确定、占空比由TIMx_CCRx捕获/比较寄存器决定。