硬件PWM工作模式、定时器详解

描述

​PWM的一个周期

   定时器从0开始向上计数
   当0-t1段,定时器计数器TIMx_CNT值小于CCRx值,输出低电平
   t1-t2段,定时器计数器TIMx_CNT值大于CCRx值,输出高电平
   当TIMx_CNT值达到ARR时,定时器溢出,重新向上计数...循环此过程
   至此一个PWM周期完成
 

详解:
若配置脉冲计数器TIMx_CNT为向上计数,而重载寄存器TIMx_ARR配置为N,即TIMx_CNT的当前计数值数值X在TIMxCLK时钟源的驱动下不断累加,当TIMx_CNT的数值X大于N时,会重置TIMx_CNT数值为0重新计数。
而在TIMxCNT计数的同时,TIMxCNT的计数值X会与比较寄存器TIMx_CCR预先存储了的数值A进行比较,当脉冲计数器TIMx_CNT的数值X小于比较寄存器TIMx_CCR的值A时,输出高电平(或低电平),相反地,当脉冲计数器的数值X大于或等于比较寄存器的值A时,输出低电平(或高电平)。
如此循环,得到的输出脉冲周期就为重载寄存器TIMx_ARR存储的数值(N+1)乘以触发脉冲的时钟周期,其脉冲宽度则为比较寄存器TIMx_CCR的值A乘以触发脉冲的时钟周期,即输出PWM的占空比为A/(N+1)。

如果初学者,看标注的红色字体,就大体可以理解

PWM的工作模式:
PWM模式1(向上计数)  :计数器从0计数加到自动重装载值(TIMx_ARR),然后重新从0开始计数,并且产生一个计数器溢出事件   
PWM模式2(向下计数)  :计数器从自动重装载值(TIMx_ARR)减到0,然后重新从重装载值(TIMx_ARR)开始递减,并且产生一个计数器溢出事件   
设置寄存器TIMx_CCMR1的OC1M[2:0]位来确定PWM的输出模式:

PWM模式1:在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。
PWM模式2:在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有效电平,否则为无效电平。
 时通道1为无效电平,否则为有效电平;在向下计数时,一旦timx_cnt>时通道1为有效电平,否则为无效电平;在向下计数时,一旦timx_cnt>

 在两种模式下TIMx_CNT(计数器当前值)与TIMx_CCR1(捕获/比较值)   只是决定是有效电平还是无效电平  

 有效电平可以是高电平也可以是低电平,这需要结合CCER寄存器的CC1P位的值来确定。

 

​ TIMx_CCER寄存器的CCCP位,设置输入/捕获通道1输出极性  

0:高电平为有效电平     
1:低电平为有效电平
若为向上计数,且CCER寄存器的CC1P位为0,则当TIMx_CNT时,输出高电平;<>

同样向上计数,且CCER寄存器的CC1P位为1,则当TIMx_CNT时,输出低电平。<>


1、CCR1寄存器:捕获/比较值寄存器:设置比较值;

计数器值TIMx_CNT与通道1捕获比较寄存器CCR1进行比较,通过比较结果输出有效电平和无效电平    

OC1REF=0 无效电平    
OC1REF=1 无效电平
2、TIMx_CCMR1寄存器:OC1M[2:0]位:用于设置PWM模式

110:PWM模式1
111:PWM模式2
3、CCER寄存器:CC1P位:输入/捕获1输出极性。

0:高电平为有效电平     
1:低电平为有效电平

4、CCER寄存器:CC1E位:输入/捕获1输出使能。

0:关闭使能
1:打开使能
5、输出电平信号

TIM定时器的四路通道TIMx_CHx输出PWM

定时器

总结:

每个定时器有四个通道,每一个通道都有一个捕获比较寄存器,

将寄存器值和计数器值比较,通过比较结果输出高低电平,便可以实现脉冲宽度调制模式(PWM信号)

TIMx_ARR寄存器确定PWM频率,

TIMx_CCRx寄存器确定占空比

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分