本文通過呼吸燈實驗,演示STM32中PWM的配置與應(yīng)用。
打開CubeMX軟件,新建工程。

輸入芯片型號。

根據(jù)封裝選擇列表中的芯片,我的是LQFP144封裝,雙擊此項。

在Project Manager選項卡中,配置工程名、編譯工具,如下圖所示。

在Pinout&Configuration選項卡中,配置System的Debug為Serial Wire,否則可能無法下載程序。

RCC選擇高速外部時鐘。

根據(jù)電路原理圖,可知LED7對應(yīng)PC6管腳。


本實驗要讓PC6管腳輸出PWM波形,實現(xiàn)LED7呼吸燈效果。
找到PC6,選中TIM3_CH1。

找到TIM3,通道1配置PWM輸出。

查找STM32參考手冊時鐘圖,找到TIM3時鐘的位置在APB1上。

在CubeMX上配置APB1 Timer定時器時鐘頻率為72MHz。

配置TIM3_CH1參數(shù),這里涉及到到計算的問題,具體說一下。

如上圖PWM產(chǎn)生原理:
定時器從0開始計數(shù)
0-t1時段,輸出低電平
t1-t2時段,輸出高電平
當定時器計數(shù)值達到ARR時溢出,完成一個周期
輸出邏輯電平方波,如上圖紅線所示。
PWM頻率計算公式:
PWM頻率 = 定時器時鐘頻率/(AutoReloadRegister + 1)/(PSC + 1)
簡單推導(dǎo)一下PWM頻率是如何計算的:
一個PWM波周期t2的大小,也就是從0計數(shù)到ARR所需要的時間,每一個定時器時鐘周期計數(shù)一次,總共計數(shù)ARR次之后溢出完成一個周期。

占空比計算公式:CCRx/ARR。
回到CubeMX工程,TIM3參數(shù)設(shè)置如下,
ARR=500-1,PSC=72-1,Pulse=170
占空比大概是Pulse/ARR約等于50%,PWM頻率2000Hz。

保存,生成代碼。

打開工程。

在MDK中main.c添加如下代碼。

主函數(shù)比較簡單,i值逐漸增大,占空比隨之增大,LED亮度逐漸增加。
當i值為299時,fx值變?yōu)?,從下一個循環(huán)開始i值開始逐漸減小,占空比隨之減小,過程中LED亮度逐漸減弱。
審核編輯:黃飛
-
原理圖
+關(guān)注
關(guān)注
1353文章
6427瀏覽量
246355 -
PWM
+關(guān)注
關(guān)注
116文章
5872瀏覽量
225727 -
STM32
+關(guān)注
關(guān)注
2310文章
11162瀏覽量
373530 -
定時器
+關(guān)注
關(guān)注
23文章
3368瀏覽量
123716 -
呼吸燈
+關(guān)注
關(guān)注
10文章
117瀏覽量
44107
原文標題:詳解STM32呼吸燈的PWM實現(xiàn)
文章出處:【微信號:ARM與嵌入式,微信公眾號:ARM與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
使用STM32CubeMX輸出PWM,并制作呼吸燈效果
基于stm32的PWM呼吸燈工程分享
基于stm32的PWM呼吸燈工程分享
怎么通過PWM來實現(xiàn)呼吸燈的
PWM實現(xiàn)呼吸燈的應(yīng)用
請問一下STM32 PWM是如何去實現(xiàn)呼吸燈設(shè)計的
基于stm32的PWM輸出呼吸燈(包括stm32呼吸燈代碼)
STM32實現(xiàn)PWM呼吸燈的程序合集免費下載
STM32_PWM呼吸燈
STM32 使用PWM實現(xiàn)呼吸燈
stm32使用延時實現(xiàn)呼吸燈寄存器版
STM32G0開發(fā)筆記:用PWM來實現(xiàn)LED呼吸燈效果
STM32呼吸燈中PWM的配置與應(yīng)用詳解
評論