前言
本篇文章為個人參考總結(jié)所用,如果錯誤還望指出。
涉及的知識:
1、STM32CubeMx的部分使用
2、PWM原理及常用概念
3、用單片機生成一定頻率的PWM
用到的軟件及單片機:
1、STM32CubeMx
2、IDE: MDK-Keil軟件
3、芯片:STM32F407ZGT6
4、開發(fā)板:正點原子探索者
注:不同型號的單片機實現(xiàn)的原理基本相似,F(xiàn)1實現(xiàn)過程同理
一、PWM是什么?
??脈沖寬度調(diào)試(PWM),英文“Pulse Width Modulation”,是利用微處理器的數(shù)字輸出 來對模擬電路進行控制的一種非常有效的技術(shù),廣泛應(yīng)用在測量、通信、工控等方面。
PWM的幾個重要的參數(shù):
1、PWM的頻率
??PWM的頻率是指PWM信號中高電平和低電平交替出現(xiàn)的時間周期,也稱為PWM周期。它通常以赫茲(Hz)為單位表示,即每秒鐘發(fā)生多少次PWM周期。例如,一個PWM頻率為100Hz的信號的周期為10毫秒,即每10毫秒高電平和低電平各出現(xiàn)一次。
*2、PWM的周期
????????????????????T = 1 / f
??其中T是周期 ,f 是頻率。
??例如:如果頻率為100Hz,那么其對應(yīng)的周期就應(yīng)該是10毫秒。(1 / 100 = 0.01 s = 10 ms),也就是一秒鐘有100次PWM周期。
3、占空比
??PWM占空比是指PWM信號高電平狀態(tài)所占的時間與一個周期內(nèi)總時間之比,通常用百分比表示。例如,占空比為50%的PWM信號意味著高電平狀態(tài)和低電平狀態(tài)各占總周期的一半時間。
??在實際應(yīng)用中,PWM信號的占空比可以控制輸出電壓或電流的大小。具體而言,如果將PWM信號輸入到一個負載上(例如LED燈或電機),則其平均輸出電壓或電流將與占空比成正比關(guān)系。例如,占空比為80%的PWM信號將為接收器提供更高的平均電壓或電流(此時PWM輸出電壓 = 提供電壓 *80%),而占空比為20%的PWM信號將提供更低的平均值。
??在實際應(yīng)用中,使用PWM占空比來調(diào)整輸出的大小和強度非常常見。例如,對于LED燈來說,通過改變PWM占空比可以實現(xiàn)明亮度的調(diào)節(jié);對于電機來說,通過改變PWM占空比可以實現(xiàn)轉(zhuǎn)速的變化。
??注意: PWM的占空比通常是指正占空比,也就是PWM信號中高電平狀態(tài)所占時間與一個周期內(nèi)總時間之比。負占空比則表示低電平狀態(tài)所占時間與一個周期內(nèi)總時間之比。
以正占空比為例:
二、實例
PWM輸出
1、CubeMx配置
(1)RCC設(shè)置
??設(shè)置高速外部時鐘HSE,選擇外部時鐘源,配置完后右邊窗口的相應(yīng)引腳會變成綠色,表明配置完成。
(2)時鐘樹配置
??按下圖配置好后 回車鍵進行保存
(3)SYS配置
??配置成 SWD協(xié)議下載和調(diào)試
(4)定時器參數(shù)配置
??本次使用的是TIM3的串口1輸出PWM,占空比設(shè)置成為50%,輸出的PWM頻率為10KHZ,配置步驟如下(沒有提到的部分選擇默認即可),配置好后在右邊窗口便可觀察到對應(yīng)引腳(PA6)顯示綠色,即單片機會通過PA6引腳將配置好的PWM輸出。PWM輸出頻率計算公式:
- Tout是PWM的輸出頻率
- Ft是定時器的時鐘源頻率(可以從時鐘樹上獲得,本次測試為84MHZ)
- ARR是自動重裝載寄存器的值,本次設(shè)置的數(shù)值是84-1
- PSC是預(yù)分頻器寄存器的值,本次設(shè)置的數(shù)值是100-1
本次PWM的輸出頻率計算結(jié)果如下,得出PWM輸出頻率為10 000Hz,即10KHz:
??關(guān)于該處計算方法講解可以聽一下正點原子該章的講解,鏈接放在下面
正點原子 定時器溢出時間計算方法
(4)①先配置工程名、存放存放路徑和開發(fā)環(huán)境。
注意:
Ⅰ、工程名和工程存放路徑最好不要帶有中文。
Ⅱ、其中"Toolchain/IDE"(編譯器和集成開發(fā)環(huán)境),該選項用于設(shè)置在生成代碼后使用的編譯器和開發(fā)環(huán)境,以便將代碼編譯成可執(zhí)行文件并下載到目標設(shè)備上,需要配置成適合自己Keil的版本,本次配置用到的是keil5軟件,故配置如下:
②配置"Code Generator"(“代碼發(fā)生器。該選項用于通過向用戶提供配置界面,自動生成與STM32系列微控制器相關(guān)的初始化代碼和驅(qū)動程序。具體配置如下
(5)點擊"ENERATE CODE"生成工程,并打開工程。
注意:“打開工程”的前提是你需要安裝好MDKARM(本次默認keil5已經(jīng)安裝好)。
2、代碼
(1)代碼說明
①生成的代碼與CubeMx設(shè)置的配置對應(yīng)
(2)添加代碼
在main.c里面添加一行代碼即可輸出PWM。
代碼如下:
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); /* 開啟定時器3通道1的PWM輸出 */
/* USER CODE END 2 */
3、現(xiàn)象
??通過示波器觀察PA6引腳的PWM波形
占空比為50%
頻率為10KHz
周期為100us (微秒)文章來源:http://www.zghlxwxcb.cn/news/detail-653545.html
3、總結(jié)
(1)出現(xiàn)的問題
??CubeMxz生成的代碼時鐘頻率是25MHZ,在此頻率下觀察到的方波如下:??此時雖然可以生成PWM,但是生成的PWM頻率和周期不正確。
改正措施:
①將下圖中的25改為8②搜索整個工程的“25000000”,將搜索到的修改為“8000000 ”。
按照上面的步驟修改后就能輸出正常的波形。文章來源地址http://www.zghlxwxcb.cn/news/detail-653545.html
到了這里,關(guān)于STM32學(xué)習(xí)筆記(一):輸出PWM——HAL庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!