1. 程式人生 > >Stm32CubeMX快速配置與STM32HAL庫高頻詞彙(一):CubeMX使用

Stm32CubeMX快速配置與STM32HAL庫高頻詞彙(一):CubeMX使用

STM32CubeMX作為ST官方主推的開發工具,使用圖形化的介面對微控制器進行內部硬體配置,哪裡不會配置就點哪裡,更驚人的是支援STM32全系列。。。等等我要靜靜思考下人生,照這樣下去STM32的開發門檻越來越低,沒有兩把刷子還真不容易在圈子裡闖蕩

寫這個系列是因為以前一直在用STM32的標準庫來開發F1系列,可標準庫好早就不更新了。而現在使用的型號變成了F0,可有的F0還不支援以前舊的標準庫,所以只能選擇HAL庫。下過了HAL庫進行coding時又遇到了麻煩->沒有HAL庫的中文API文件。。嗚嗚嗚,後來瞭解到ST有官方開發工具STM32CubeMX這一說,配合HAL庫使用,圖形化的配置介面,自動生成程式碼,支援多種編譯器。被吸引到有沒有?感覺好強大有沒有?簡直比瑞薩的開發工具還要方便。雖然問題的本質沒有解決,但起碼能緩解下個人的開發壓力,剩下的就看個人造化了,埋頭啃英文文件。

另外本系列不會提及內部外設的工作原理,想了解工作方式的請看資料手冊。本系列主要介紹如何用STM32CubeMX進行快速開發及快速硬體配置,以及在開發中會用到HAL庫哪些高頻函式及用法注意事項。希望對標準庫及基本內部硬體有一定了解的觀看

進入正題,先上ST官網搜尋並下載STM32CubeMX,順便也把應用手冊給下下來,英文不好的就趕緊用chrome瀏覽器吧,谷歌翻譯很給力。安裝後會提示需要java環境,按照彈出的網頁下載java環境。一切弄好後,開啟應用。看著如此簡潔(kong kuang)的介面,內心簡直黑人疑問臉。。


因為我們還沒有安裝庫檔案,所以開啟Help,紅框裡的“Install Patch”是從本地下載好的韌體進行安裝,用不到故pass。“Check for Updates”是軟體版本的檢查更新,我當時的最新版本是MX.4.18.0。以前上論壇看見別人發帖說CubeMX有時會把使用者程式碼全部誤刪掉,可一看發帖日期是一年前的了,反正在我的使用過程中沒有發生任何不快,看來ST的官方更新的改進還是蠻好的,大家在使用前最好更新到最新版本。“Install New Libraries”是從伺服器下載開發韌體並安裝。點進去會看見各系列的韌體包,F0、F1、F2、F3、F4、F7、L0、L1、L4一應俱全,當然是選擇自己要用的系列的最新韌體進行安裝,我要用的是F0,當時最新的是1.6.0


上面的都弄好後,就可以新建一個工程了,點選介面上那個大大的“New Project”,或者“File - New Project”。還有要記得“Load Project”也是在File裡,省的以後問如何開啟CubeMX的工程配置介面,字尾是.ioc。。先在上面進行大概的檢索,再到下面勾選具體的MCU型號,“Bosrd Selector”裡面還可以對ST官方的開發板進行選型,像Discovery、Nucleo、EvalBoard都是有的。而左側的“Peripheral Selection”顯示的是當前型號的硬體外設。


到這裡,可以看見正式的配置介面,影象化的方式感覺很接地氣啊。由於沒有進行任何配置,顯得介面很空,不過我會馬上讓他充實起來的o(∩_∩)o 

由於這一篇主要是說CubeMX的使用,就暫時弄個LED和RCC時鐘配置。

點選RCC,將高速時鐘切換成外部晶振方式Crystal,切換後可以看見軟體自動將PF0.1這兩個引腳配置成了RCC_OSC外部晶振引腳

再在右側點選PC13引腳,配置成GPIO_Output,作為LED的驅動引腳


是不是感覺缺少了什麼?當然是DeBug啦,硬體除錯我用的ST-Link。10多塊錢一個很便宜也很好用,最重要的是還可以除錯STM8,體積只有一個C8T6的大小。大一學STM8時用STVD+ST-Link,到了STM32,還是用ST-Link,是不是有一種歲月的傳承感。。。廢話少說,配置SWC、SWD引腳。而且ST-Link可以和ST官方的STM Studio配合使用,隨時檢視內部變數或暫存器,可以列表作圖方便分析,可我在安裝STM Studio時失敗了,說要更新java mx......逗人玩呢這是...不買這帳了


Pinout介面配置完了,點選Clock Configuration,看見錯綜有序的時鐘樹。選擇外部時鐘HSE,PLL倍頻選擇6,再將倍頻後的時鐘48MHz作為系統時鐘。由於F0的額定最高頻率為48MHz,8MHz的外部晶振,PLL就是6了。而且一旦某條時鐘線超出額定值,相應的時鐘線就會變為紅色提醒。想超頻的可以直接修改PLL


進入下一個介面Configuration,點選GPIO,進行引腳的具體配置。要說的都在圖裡


可能有細心的朋友會注意到這個介面的左側,跟說明一樣通俗易懂,以後用到再說。不過看著是可以簡化FATFS、FreeRTOS作業系統、硬體CRC、看門狗的配置


最後一個Power管理介面,同樣可以不用管,以後用到低功耗再說。

上面全部配置完畢後,就可以生成程式碼了。不過在之前要對工程位置、開發環境、個性化進行一些設定。“Project - Settings”

切記:工程目錄不要有中文圖裡勾選的生成格式是Keil5的,生成工程後可以被Keil5開啟

儘量把“將各硬體初始化按照功能分成多個.c.h”檔案勾選上,勾不勾自己體會

第3步不用管,pass掉。



這時候就可以點選小齒輪圖示了,生成程式碼


開啟工程,while裡新增程式碼

記得這裡的格式,只有在/* USER CODE BEGIN */ 和/* USER CODE END */之間才是可以新增程式碼段的,其餘地方都會在STM32CubeMX重編譯時進行替換與更改

在while(1)裡的Begin3和End3之間新增

HAL_Delay(500);

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,(GPIO_PinState)!HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13));

就可以看到與PC13相連的LED以1Hz的頻率閃爍,Enjoy