寄存器

计数器寄存器(TIMx_CNT)
预分频器寄存器 (TIMx_PSC)
自动装载寄存器 (TIMx_ARR)
重复次数寄存器 (TIMx_RCR)

PWM模式

模式1

当TIMx_CNT如果TIMx_CCRx中的比较值大于自动重装载值(TIMx_ARR),则OCxREF保持为’1’。
如果比较值为0,则OCxREF保持为’0’。

ARR寄存器:

自动装载寄存器
从0开始计数,并产生一个寄存器溢出事件。

PSC寄存器:

16位寄存器
预分频器 设置预分频的值
可以设置以系数介于1~65336之间的任意数值对寄存器时钟分频。
(CK_CNT) = fCK_PSC/( PSC[15:0]+1)
这时的TIMx时钟为72MHz,用这个TIMx时钟72MHz除以(PSC+1),得到定时器每隔多少秒涨一次,这里给PSC赋7199,计算得定时器每隔0.0001秒涨一次,即此时频率为10KHz,再把这个值乘以(ARR+1)得出PWM频率,假如ARR值为0,即0.0001*(0+1),则输出PWM频率为10KHz,再假如输出频率为100Hz的PWM,则将ARR寄存器设置为99即可。
如果想调整PWM占空比精度,则只需降低PSC寄存器的值即可。

TIMx_CCRx寄存器

TIMx_CCR1—TIMx_CCR4确定定时器的CH1—CH4四路PWM的占空比。直接给该寄存器赋0—65535值即可确定占空比。

PWM频率计算方法:

PWM频率 = ( TIMx时钟/(PSC + 1) ) *( ARR+1 )

例如:72MHz的芯片输出100Hz频率的PWM

  1. 可以先考虑将频率分至多少
  2. 然后设置ARR的值

100Hz = (1/7200000) / (PSC +1) *(ARR+1)

占空比计算方法:

占空比 = TIMx_CCRx的值 / ARR寄存器的值