STM32F0xx_TIM輸出PWM配置詳細過程


 

推薦

 

分享一個大神的人工智能教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到人工智能的隊伍中來!

 

http://www.captainbed.net/strongerhuang

 

 

前言

前面我說過STM32的定時器功能很強大,今天就來總結一下它的另外一個“強大”功能:TIM的比較輸出功能,輸出可調PWM波形。直接調用函數接口“TIM2_CH1_PWM(uint32_t Freq, uint16_t Dutycycle)”傳入頻率和占空比就能輸出指定的波形。

我提供的軟件工程直接調用是比較簡單就能實現想要的PWM波形。但是,如果你是學習者,建議還是進去函數把每一個細節了解清楚,里面的東西可能對你掌握TIM很有幫助。

 

 

下載

文章提供的“軟件工程”都是在硬件板子上進行多次測試、並保證沒問題才上傳至360雲盤,請放心下載測試,如有問題請檢查一下你的板子是否有問題。

ST標准外設庫和參考手冊、數據手冊等都可以在ST官網下載,你也可以到我的360雲盤下載。關於F0系列芯片的參考手冊有多個版本(針對F0不同芯片),但有一個通用版本,就是“STM32F0x128參考手冊V8(英文)2015-07”建議參考該手冊,以后如果你換用一種型號芯片也方便了解。

 

今天的軟件工程下載地址(360雲盤):

https://yunpan.cn/cSitPxgQKsET5  訪問密碼

 

STM32F0xx的資料可以在我360雲盤下載:

https://yunpan.cn/cS2PVuHn6X2Bj  訪問密碼 8c37

 

 

准備工作

建議准備F0的參考手冊和數據手冊,方便查找相關知識,沒有的請到ST官網或到我360雲盤下載。

今天總結的軟件工程是基於“TIM基本延時配置詳細過程”修改而來,因此需要將該軟件工程下載准備好。今天學習的源代碼主要添加在timer.c文件里面。

 

比較輸出原理

看下面框圖,計數器的時鍾從RCC處來,經過分頻之后達到計數器,經過比較器進行比較,達到設定值,產生一個事件對應引腳翻轉。主要就是這三個寄存器:重載值、計數值、比較值。說到這里若還不明白請仔細想一下。

 

配置過程詳情

①RCC時鍾

該函數位於bsp.c文件下面;

我個人習慣第一步配置時鍾,ST官方提供的例程也是把配置時鍾放在前面。關於RCC時鍾的配置比較重要,有好幾次我就是由於忘記配置相應RCC時鍾,讓我找了很久的問題,最后才發現是RCC時鍾沒有配置。

注意:

外設時鍾不要隨便添加,比如:RCC_APB1外設不要配置在RCC_APB2時鍾里面【如:RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);這樣能編譯過,但是錯誤的

我每次都提醒RCC時鍾,是因為很多人就是因為時鍾而導致軟件運行有問題,所以,提醒更多人要注意配置RCC.

 

②輸出引腳配置

該函數位於timer.c文件下面;

注意:

復用功能必須配置好,上面兩處,有一處沒配置好,對應引腳都不會輸出PWM波形。

 

③TIM比較輸出配置

該函數位於timer.c文件下面;

注意:

決定輸出頻率和占空比主要由這三個參數(TIM2_PRESCALER_VALUE、tim2_period、tim2_pulse)決定的。

以今天工程輸出1KHz,20%來舉例說明:

TIM2_PRESCALER_VALUE = 72M / 36M - 1 = 1

tim2_period = 36000 - 1

tim2_pulse = 7200

這三個怎么得來的請看代碼,今天工程輸出的波形如下圖:

 

④重點

A.細心研究過代碼的人會發現TIM_OCMode_PWM1,還有一個TIM_OCMode_PWM2,這兩個的區別是什么呢? 答案是:輸出的極性(也就是方向)不一樣。

這時候又有人問:那下面的輸出極性TIM_OCPolarity_High與上面的關系是什么呢?答案是:這兩個參數配合一起輸出決定PWM波形的極性。

也就是說不同參數可以達到一樣的效果,下圖參數的配置同樣可以輸出一樣的波形。

感興趣的朋友可以試着修改測試一下效果。

B.今天的工程可以設置周期性中斷(也就是1ms中斷一次),感興趣的朋友可以試着寫一下。使用串口打印測試的話,盡量頻率低一點,不然串口響應不過來。

 

 

說明

或許你硬件芯片不是提供工程里面的芯片,但是STM32F0的芯片軟件兼容性很好,可以適用於F0其他很多型號的芯片,甚至是F2、F4等芯片上(具體請看手冊、或者親自測試)。

本文章提供的軟件工程是基於ST標准外設庫為基礎建立而成,而非使用STM32CubeMX建立工程。個人覺得使用ST的標准外設庫適合與學習者,STM32CubeMX建立工程結構復雜,對於學習者,特別是初學者估計會頭疼。

今天的工程是基於工程“STM32F0xx_TIM基本延時配置詳細過程”修改而來,以上實例總結僅供參考,若有不對之處,敬請諒解。

 

 

最后

我的網站:https://www.strongerhuang.com

我的知乎:https://www.zhihu.com/people/strongerHuang.com

 

我的微信公眾號(ID:strongerHuang)還在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus…等更多精彩內容,如果想查看更多內容,可以關注我的微信公眾號。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM