STM32中單路PWM的生成一般是基于某一個通用定時器,本次小實驗選取TIM2通用定時器,選擇PA5作為PWM端口輸出。配置步驟如下:
第一步:配置外部晶振與基本的時鐘,如下圖所示。
(1)選擇外部晶振
?(2)配置時鐘樹,如下圖所示,TIM2的時鐘總線掛在ABP1上,此時時鐘源為72M
第二步:配置GPIO,配置GPIO_PA5為TIM2_CH1的輸出端口。
?第三步:配置TIM2時鐘,其配置如下圖所示,圖中1-6分別為
- 選擇時鐘源為內(nèi)部時鐘;
- 選擇通道1為PWM生成模式;
- TIM2內(nèi)部分頻系數(shù)為7200-1=7199,到達7200分頻的效果;
- 設(shè)置累加計數(shù)的TPRD值為5000 - 1 = 4999 達到的是5000的效果;
- Pulse設(shè)置占空比,1000/5000 = 20% 此時占空比為20%。
- PWM比較值電平跳變的模式,模式1是到達比較值跳變?yōu)榈?,模?是到達比較值跳變?yōu)楦?,一個先高后低,一個先低后高。
?第四步:在代碼內(nèi)打開定時器TIM2的第一個通道,這步很關(guān)鍵,必須要用戶自己打開,CUBEMX僅僅只是幫我們把底層配置好,這個開關(guān)還是靠我們自己定義,代碼如下。
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); //主要是這句
?第五步:進行實驗,實驗結(jié)果如下圖所示,第一張是mode1,第二章是mode2,結(jié)果如設(shè)計所得。這里需要解釋一下的是為什么周期是500ms,因為時鐘是72M的,但是分頻數(shù)是7200,所以此時TIM2的7200個時鐘脈沖代表1s,而此時count period的值是5000,5000/10000*1s = 0.5s所以周期就是500ms。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-469302.html
文章來源:http://www.zghlxwxcb.cn/news/detail-469302.html
?
到了這里,關(guān)于搭建stm32電機控制代碼框架(四)——單路PWM生成的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!