練習STM32動態更改PWM波頻率和占空比

2021-09-02 19:59:28 字數 2302 閱讀 8416

stm32的pwm波動態調頻和調占空比

以tim3_ch1為例

(1)定時器工作原理

定時器的時基單元包含三個部分:①自動裝載暫存器(timx_arr),②預分頻器暫存器 (timx_psc),③計數器暫存器(timx_cnt)。設定自動裝載值,預分頻器根據所設定的分頻係數(1-65536)對定時器所選擇的時鐘源進行分頻,分頻後的頻率驅動計數器。計算器開始計數,當計數器達到自動裝載值時,重新開始計數!

以秒錶舉例:時鐘源是秒針,經過60分頻後的頻率變成分針,分針一分鐘一分鐘的增加,當分針數達到60時,又從零開始計數。在這個例子中,秒針是時鐘源,第乙個60就是預分頻器設定的值,第二個60就是自動裝載暫存器設定的值。

(2)pwm波工作原理

pwm波就是一串週期性的高低電平訊號,不過高低電平持續時間可調。當以定時器為驅動時,定時器的計數頻率就是pwm波的頻率,然後根據timx_ccrx設定的值和定時器計數器當前的數值timx_cnt比較大小,根據比較結果輸出高低電平。比較結果和高低電平之間的關係就是我們設定的pwm對齊方式。

同樣以上文的秒錶舉例,如果我們設定為邊沿對齊的向上計數模式,當我們設定的值為30時,分針數每次加一都和30比較,比30小則輸出高電平,反之低電平。

(3)pwm波調頻和調占空比的實現方式

1、調節占空比:只要根據設定的timx_arr暫存器的值和所需要的占空比設定timx_ccrx暫存器的值即可。例如:timx_arr的值為100,需要占空比為50%,則設定timx_ccrx的值為50即可。

2、調頻:

①更改預分頻器的值,改變計數器的頻率

如下圖:摘自stm32f1xx的中文參考手冊

如圖:當預分頻係數為1時,乙個定時器時鐘週期就是乙個時鐘源週期,在f8-fc之間,乙個定時器週期,計數器加一。

當預分頻係數為4時,乙個定時器時鐘週期就是4個時鐘源週期,在00-01之間,乙個定時器週期,即4個時鐘源週期,計數器加一。

②計數器頻率一定時,改變timx_arr的值。計數器頻率一定,計數到100之後從零開始肯定比計數到1000從零開始更快。

如下圖:摘自stm32f1xx的中文參考手冊

如圖:設定了timx_arr暫存器之後要通過設定timx_cr1暫存器的arpe位使之生效

(4)pwm波調占空比和調頻程式原始碼以及keil mdk5的**圖

1、tim3_ch1初始化程式

void	tim3_ch1_init(u32 fcount)

2、調節占空比:

在stm32f103中有封裝好的調節占空比的函式tim_setcompare1();直接呼叫即可。

tim_setcompare1()的函式介紹如下圖

程式如下:

int main()}}

**結果如下圖:

隨著時間增加,pwm波的占空比在增大。

3、調節頻率:

①通過更改預分頻器的值,改變計數器的頻率的方式改變pwm波的頻率

在stm32f103中有封裝好的調節預分頻器的函式 tim_prescalerconfig();直接呼叫即可。

tim_prescalerconfig()的介紹以及引數形式如下圖

程式如下:

int main()}}

**結果如下圖:

pwm波的頻率明顯增加了,如果放大了看,頻率正好是按照設定的5倍增加的

②通過改變timx_arr的值,調節pwm波的頻率

程式如下:

int main()

}

**結果如下:

STM32輸出PWM波教程

pwm輸出配置步驟 舉例 使能定時器3和相關io口時鐘。使能定時器3時鐘 rcc apb1periphclockcmd 使能gpiob時鐘 rcc apb2periphclockcmd 初始化io口為復用功能輸出。函式 gpio init gpio initstructure.gpio mode g...

STM32的PWM和DAC練習

二 dac 總結參考資料 pwm是 pulse width modulation 的縮寫,中文意思就是脈衝寬度調製,簡稱脈寬調變。它是利用微處理器的數字輸出來對模擬電路進行控 制的一種非常有效的技術,其控制簡單 靈活和動態響應好等優點而成 為電力電子技術最廣泛應用的控制方式。stm32f1 除了基本...

STM32的PWM和DAC練習

1.pwm簡介 pwm是 pulse width modulation 的縮寫,中文意思就是脈衝寬度調製,簡稱脈寬調變。它是利用微處理器的數字輸出來對模擬電路進行控 制的一種非常有效的技術,其控制簡單 靈活和動態響應好等優點而成 為電力電子技術最廣泛應用的控制方式。2.原理 脈寬調變 pwm 基本原...