STM32 PWM占空比和訊號週期的控制因素分析

2021-08-31 09:41:45 字數 1629 閱讀 5857

博文基於stm32f103zet6晶元,標準韌體庫3.5.0和mdk5編寫;

博文並不討論pwm的基礎知識,而是直接去談對pwm靈活的控制問題;想全面了解的可以看看我寫的專門針對pwm的部落格:

如有不足之處還行多多指教;

占空比:0~100%;

訊號週期:pwm訊號裡乙個高電平和乙個低電平的時間和;

對這兩個引數的設定是配置pwm輸出的核心也是今天要討論的主要任務;

首先要明白乙個知識:stm32的定時器輸出的pwm的占空比由定時器的三個暫存器決定,分別是

定時器計數器timx_cnt;

定時器自動重裝載暫存器timx_arr;

定時器捕獲/比較暫存器timx_ccrx;

定時器預分頻器timx_psc;

cnt和ccrx的對占空比的影響:

對於本實驗要滿足的前提如下:

6. cnt是向上計數的方式;需設定timx_crx暫存器中的dir[1:0]=0;

7. crx輸出極性為高;需要設定timx_ccer暫存器中的ccxp=1;

8. chx的模式為輸出pwm1模式;需設定timx_ccmrx暫存器中的ocxm[2:0]=110;

(上面這三個因素對於pwm的輸出至關重要,而且是定時器很難理解的地方)

占空比的形成過程

計算公式:

當cnt=ccrx時,ocxref=0,polarity=1,則chx輸出高電平1;

當cnt的值更新後,chx從高電平再次轉為低電平,自此下乙個週期就開始了;

滿足以上前提的時序圖:(令arr=8,下圖中的ccxif為捕獲/比較中斷標誌位)

還可以從圖中得到另乙個結論:pwm的訊號週期就等於cnt的更新週期;

占空比的計算:占空比 = ccrx/arr; (前提不同,公式可能會變成1-(ccrx/arr));

訊號週期的計算:訊號週期= (arr+1)(psc+1)/pclkx; (這其實就是cnt的更新週期的計算)

欲改變燈的亮度,只需改變占空比,欲改變占空比,只需改變ccrx的值或者arr的值,一般都是改變ccrx的值;

pwm的訊號週期如果長,整個燈就看不出來漸變的效果了,而是閃爍的效果,根據人的視覺暫留效應,對於訊號週期的配置很重要;大於這個值的時候,用肉眼就可以看出閃爍感覺了;

STM32 PWM原理總結

pwm的工作原理 假如我們要讓乙個led燈由暗到亮,就需要不斷的改變ccrx的值,也就是改變占空比。如果我們改變led燈由暗到亮的速度,我們就需要改變arr的值。pwm配置相關暫存器 使用通用定時器的pwm功能,除了配置一般定時器的方式之外,還需要三種暫存器來控制 捕獲 比較暫存器 timx ccr...

STM32 PWM控制詳解

include sys.h 定時器3,可產生四路的pwm輸出,四個通道分別對應的引腳情況如下 tim3 ch1,tim3 ch2,tim3 ch3,tim3 ch4 沒有重映像的對應情況 pa6,pa7,pb0,pb1 部分重映像 pb4,pb5,pb0,pb1 完全重映像 pc6,pc7,pc8,...

STM32 PWM輸出設定

計數器暫存器 timx cnt 預分頻器暫存器 timx psc 自動裝載暫存器 timx arr 重複次數暫存器 timx rcr 當timx cnt如果timx ccrx中的比較值大於自動重裝載值 timx arr 則ocxref保持為 1 如果比較值為0,則ocxref保持為 0 自動裝載暫存...