寄存器
计数器寄存器(TIMx_CNT)
预分频器寄存器 (TIMx_PSC)
自动装载寄存器 (TIMx_ARR)
重复次数寄存器 (TIMx_RCR)
PWM模式
模式1
当TIMx_CNT<TIMx_CCRx时,PWM输出为高,否则为低。
如果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
- 可以先考虑将频率分至多少
- 然后设置ARR的值
100Hz = (1/7200000) / (PSC +1) *(ARR+1)
占空比计算方法:
占空比 = TIMx_CCRx的值 / ARR寄存器的值