打開CubeMX軟件,新建工程。
輸入芯片型號。
根據封裝選擇列表中的芯片,我的是LQFP144封裝,雙擊此項。
在Project Manager選項卡中,配置工程名、編譯工具,如下圖所示。
在Pinout&Configuration選項卡中,配置System的Debug為Serial Wire,否則可能無法下載程序。
RCC選擇高速外部時鐘。
本實驗要讓PC6管腳輸出PWM波形,實現LED7呼吸燈效果。
找到PC6,選中TIM3_CH1。
找到TIM3,通道1配置PWM輸出。
查找STM32參考手冊時鐘圖,找到TIM3時鐘的位置在APB1上。
在CubeMX上配置APB1 Timer定時器時鐘頻率為72MHz。
配置TIM3_CH1參數,這里涉及到到計算的問題,具體說一下。
如上圖PWM產生原理:
定時器從0開始計數
0-t1時段,輸出低電平
t1-t2時段,輸出高電平
當定時器計數值達到ARR時溢出,完成一個周期
輸出邏輯電平方波,如上圖紅線所示。
PWM頻率計算公式:
PWM頻率 = 定時器時鐘頻率/(AutoReloadRegister + 1)/(PSC + 1)
簡單推導一下PWM頻率是如何計算的:
一個PWM波周期t2的大小,也就是從0計數到ARR所需要的時間,每一個定時器時鐘周期計數一次,總共計數ARR次之后溢出完成一個周期。
占空比計算公式:CCRx/ARR。
回到CubeMX工程,TIM3參數設置如下,
ARR=500-1,PSC=72-1,Pulse=170
占空比大概是Pulse/ARR約等于50%,PWM頻率2000Hz。
保存,生成代碼。
打開工程。
在MDK中main.c添加如下代碼。
主函數比較簡單,i值逐漸增大,占空比隨之增大,LED亮度逐漸增加。
當i值為299時,fx值變?yōu)?,從下一個循環(huán)開始i值開始逐漸減小,占空比隨之減小,過程中LED亮度逐漸減弱。
編譯下載到開發(fā)板,可以看到如下呼吸燈效果。
審核編輯:劉清
-
PWM
+關注
關注
114文章
5196瀏覽量
214402 -
STM32
+關注
關注
2270文章
10918瀏覽量
356821 -
呼吸燈
+關注
關注
10文章
111瀏覽量
42773
原文標題:STM32中PWM的配置與應用詳解
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論