1. 程式人生 > >使用HAL庫、STM32CubeMX和Keil 5開發入門教程(一):點亮一盞LED燈(NUCLEO-F411RE)

使用HAL庫、STM32CubeMX和Keil 5開發入門教程(一):點亮一盞LED燈(NUCLEO-F411RE)

本教程以點亮一盞LED燈為目的為大家演示用STM32CubeMX、Keil、ST-Link開發STM32程式的一般方法。

一、學習前的準備工作

硬體:一塊STM32開發板,一個ST-Link;(我使用的開發板是NUCLEO-F411RE)
軟體:裝好ST-Link的驅動程式,裝好STM32CubeMX,裝好Keil;
文件:開發板的原理圖、晶片的參考手冊和HAL驅動說明書。
附:STM32F4xx HAL驅動說明書

二、建立一個新的STM32CubeMX工程

開啟STM32CubeMX,然後單擊New Project
開啟STM32CubeMX,然後單擊*New Project*
選擇Series(系列)、Lines(系列)、Package

(封裝),然後選中自己MCU的型號,點選OK:(我的MCU是STM32F411RE,64引腳LQFP封裝)
選擇*Series*(系列)、*Lines*(系列)、*Package*(封裝),然後選中自己MCU的型號,點選*OK*。(我的MCU是STM32F411RE,64引腳LQFP封裝)
至此一個STM32CubeMX工程已經建立好:
至此一個STM32CubeMX工程已經建立好

三、配置對應引腳,然後生成Keil工程

開啟開發板原理圖,檢視LED燈對應的引腳:(如圖所示,讓PA5引腳輸出高電平即可點亮LED)
開啟開發板原理圖,檢視LED燈對應的引腳
點選Pinout,然後單擊LED燈對應的引腳,選擇GPIO_Output模式:(將PA5設定成通用輸入輸出口的輸出模式,具體請參考Reference manual中的GPIO introduction)
點選*Pinout*,然後單擊LED燈對應的引腳,選擇*GPIO_Output*模式
由於本例程不需要配置時鐘、中介軟體和外圍裝置,也不需要計算功耗,所以Clock Configurantion

ConfigurationPower Consumption Caculator保持預設。
點選選單欄的Project->Settings,輸入STM32CubeMX工程名稱、儲存路徑以及自己的工具鏈/整合編譯環境,Code Generator中的設定保持預設,然後點選OK:(我的STM32CubeMX工程名稱為LD2,儲存路徑為桌面,整合編譯環境為Keil 5)
點選選單欄的*Project*->*Settings*,輸入STM32CubeMX工程名稱、儲存路徑以及自己的工具鏈/整合編譯環境,*Code Generator*中的設定保持預設,然後點選*OK*
然後點選選單欄的Project->Generate Code,或者點選Generate Code快捷鍵快捷鍵生成包含HAL庫的Keil工程以及初始化程式碼。此時對應路徑上即會出現一個以此STM32CubeMX工程名稱為名稱的資料夾。開啟對應路徑上的資料夾,其中以.ioc
為副檔名的檔案即為STM32CubeMX的工程檔案,以整合編譯環境為名字的資料夾中含有以此STM32CubeMX工程名稱為名稱的此整合編譯環境的工程檔案,Drivers目錄中包含了驅動程式,Inc目錄中包含了標頭檔案,Src目錄中包含了原始碼:(LD2.ioc檔案即為剛剛建立的STM32CubeMX工程,MDK-ARM資料夾中的LD2.uvprojx檔案即為剛剛生成的Keil工程)
包含HAL庫的Keil工程以及初始化程式碼

四、 在Keil工程中新增自己的程式碼,然後編譯、下載

開啟Keil工程,根據註釋找到新增程式碼的地方。請不要在提示之外的地方新增程式碼,否則再次生成STM32CubeMX工程時會被刪除:(因為STM32CubeMX已經幫我們生成了初始化程式碼,所以我們只需要在/* USER CODE BEGIN 2 /與/ USER CODE END 2 */之間新增一句使PA5輸出高電平的程式碼)
開啟Keil工程,根據註釋找到新增程式碼的地方。請不要在提示之外的地方新增程式碼,否則再次生成STM32CubeMX工程時會被刪除
開啟HAL驅動說明書找到我們需要的API,然後根據說明新增程式碼:(根據說明得到使PA5輸出高電平的程式碼為HAL_GPIO_WritePin (GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
開啟HAL驅動說明書找到我們需要的API,然後根據說明新增程式碼
往工程中新增程式碼,然後點選編譯編譯,用ST-Link連線好計算機和開發板後點擊下載下載:
往工程中新增程式碼,然後編譯、下載

五、 下載完成後復位開發板,然後開發板的LD2(綠燈)亮了

下載完成後復位開發板,然後開發板的LD2(綠燈)亮了