?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寄存器確定占空比
-
PWM
+關注
關注
114文章
5186瀏覽量
213937 -
定時器
+關注
關注
23文章
3248瀏覽量
114800
發布評論請先 登錄
相關推薦
評論