keil stm32标准库放在哪里_STM32之PWM
脈沖寬度調制
脈沖寬度調制是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效且應用十分廣泛的技術,例如直流電機的控制、開關電源的輸出調制、信號的傳遞也離不開脈沖寬度調制。
? 我們接下將要討論的便是單片機中PWM的產生與應用。在STM32單片機中,以F103C8為例,它共有四個定時器,每個定時器有四個PWM輸出通道,TIM1為高級定時器,除了正常的四路PWM輸出外,前三路還可以有與之互補的PWM輸出,并且帶有死區控制,可以用于電機控制。
???本文在介紹PWM使用的同時,順便推廣一波STM32CubeMX的應用。
相信對于很多新手來說,上來就了解工程的配置和單片機一些寄存器的配置是比較吃力的。即便是一些老手也不一定完全了解整個單片機MDK文件工程的配置,一直在套用類似于模板的東西,遇到新型的單片機便是心有余而力不足,并且現在官方標準庫也是停止更新了,對于一些新型的單片機是不支持的,而STM32CubMX便可以很好的解決這個問題。即便是新手,也可以輕松學會單片機整個工程文件的配置,也能為后期的寄存器進一步學習打好基礎。本文便以PWM呼吸燈程序為例,使用STM32CubeMX進行相關外設的配置和MDK工程文件生成。
在打開軟件之后,點擊File,選擇新建工程,然后在跳出的對話框中選擇STM32F103C8(本文以此單片機為例),然后點擊Start Project。
首先點擊時鐘RCC頁面進行配置,由于小編使用的板子為外部時鐘,(雖然STM32單片機大多提供內嵌RC振蕩電路,但是其精度經出廠校準后也只有1%,而外部晶振一般在10^-5甚至更低)所以選擇在高速時鐘選擇Ceramic Resonstar,沒有使用低速時鐘所以默認失能,其它配置默認參數。
接著進行SYS配置,Debug模式選擇Serial Wire(小編用的是SW,與個人硬件配置有關),其它默認配置。
???????再接著配置時鐘樹,相信大多數沒有使用過Cube的小伙伴對于時鐘樹的理解可能比較抽象,但是看看下圖時鐘樹界面,整個世界亮了有木有。
????????按照下圖所示選擇8M外部晶振,經過鎖相環后倍頻為9倍(小編的板子是外接的8M晶振,并且此單片機最高頻率72M),然后接著給各個時鐘線進行分頻,當哪個時鐘框變紫色則說明超過這個時鐘線的最大頻率,我們把各時鐘線均配置為最大頻率。(在不考慮低功耗的情況下,均選擇其性能最佳頻率)
在配置完了時鐘樹之后,就可以配置定時器了,小編的LED是掛在PA6引腳的,拉低引腳電平燈亮。所以單擊右側單片機上的PA6引腳,選擇其所在的定時器3通道1,在配置框內通道1選擇生成PWM,然后在下面進行參數配置,定時器的分頻和裝載值填寫在前期的推送中已經講過,這里把定時器周期配置為1ms,具體不再贅述。下面有關PWM輸出配置:PWM模式和通道極性,它們的作用如下圖所示。
接著在中斷配置頁面使能中斷。
在這里點亮一個呼吸燈的相關端口配置就結束了。在GPIO窗口界面我們還可以看到,當單片機某個引腳被配置為PWM輸出后,這個引腳就被默認配置為推挽輸出功能,由于是默認配置,下面就不放圖了。最后進行工程文件設置。
來到工程管理頁面,首先進行工程命名,然后選擇工程保存地址,再選擇IDE。(本文以KEIL,也就是MDK工程文件)再進一步可以看到每個端口配置可以選擇其所使用的函數庫,我們默認使用HAL庫。在基礎設置全部配置完畢之后,點擊右上角生成代碼就OK了。第一次生成F1系列工程文件,還需要下載一個固件包,按照提示,點擊確定就可以了。
到這里端口配置和工程生成就大功功告成了,有木有感覺很簡單???
(本文所示意的配置均為最基礎配置,其它的沒有提到的配置選項和功能還有很多,除了基礎功能之外,它甚至可以根據你的配置估算單片機的功耗。對于未提到的單片機配置選項,可以自行查看單片機參考手冊探索配置,對于未提到功能,感興趣可以百度嘗試食用。)
配置完成之后用KEIL打開工程,可以看到所有配置好的的初始化已經放在了相應的位置,只需要開啟使用便可以了,本實驗中我們用到了定時器3和它的PWM1輸出通道,開啟輸出。
????? ?接著書寫呼吸燈程序,由于程序單一,便直接寫在中斷了。
????????我們通過num這個變量來不斷改變輸出PWM的占空比。由我們配置可知,在計數寄存器TIM3->CNT未計到TIM3->CCR1的比較值之前,PWM輸出為高電平,LED滅,之后輸出低電平,LED亮。呼吸燈可以劃分為燈由亮到暗和由暗到亮兩個過程。在本程序中,我們使用flag變量標志燈所處在亮過程還是暗過程,num由0-999循環,控制PWM輸出有效電平的占空比隨之加長或變短,就形成了燈的呼吸效果。本文生成的呼吸燈周期為2s.(有一點需要注意,自己書寫的代碼必須放在工程中規定的地方,就是各種BEGIN和END之間,否則再次使用Cube進行配置后未放在指定位置的代碼將被清理)
要更好的呼吸效果和方式,可以自行探索哦!??????? STM32CubeMX軟件可以從STM32官網免費獲取!
????????點擊文章末尾閱讀原文可獲取完整工程文件百度云鏈接。
????????由于作者水平有限,難免有錯漏之處,歡迎在公眾號后臺留言指出。
歡迎關注我們!!!
微博
B站
公眾號
QQ群
ACTION
誠邀贊助
聯系郵箱:neu_action@163.com
總結
以上是生活随笔為你收集整理的keil stm32标准库放在哪里_STM32之PWM的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue做混合式app_Vue+原生App
- 下一篇: java私有表示标识_java里面的标识