如何快速開發 STM32 項目?我們總不能每次開發一個項目就搭建一次工程,這樣效率太低了。
通常我們會使用一個模板工程,需要開發新項目的時候拿出來添加一些對應的模塊及業務代碼,一個項目就開發完成了。
但對于新手朋友來講,如何創建一個工程模板對他們來講是個非常大的挑戰。因為這個過程非常繁瑣,雖然不復雜,但只要其中有一個環節做錯了,那么就前功盡棄了,而且還不好排查。
本文將手把手帶你創建 HAL 版本 MDK 工程模板,基于 STM32F103C8T6 芯片。文章參照正點原子的教程,并結合自己的工作經驗寫作而成,如果你能按照這個教程跟著操作,相信一定能夠自己搭建一個HAL版本MDK工程模板。
1. 源碼下載及前置閱讀
如果大家跟著本教程學習還是無法自己創建 HAL 版本的 MDK 工程模板,那么可以參考我給大家準備的源文件。
源碼及本文所需要的固件包已經為大家準備好了,大家可以添加良許微信免費獲?。▊渥?120):
如果不知道如何搭建 STM32 編程環境,不知道如何燒錄 STM32 代碼,可以閱讀這篇文章:
【零基礎快速上手STM32開發(手把手保姆級教程)】
2. 文件下載
可以根據以下步驟找到官方固件包:
STM32Cube 官方固件包在 ST 公司的官網可以免費下載,網址為:
可以根據以下步驟找到官方固件包:
但由于官網在國外,下載速度很慢,而且需要填寫各種信息,所以大家可以直接使用我給大家提供的固件包,反正也是從官網下載的。當前最新版本是 V1.8.5 。
3. 新建工程文件夾
真正開發 STM32 項目,就不是簡單一兩個 .c 和 .h 文件那么簡單了,而是有幾十個甚至更多的文件構成,通過某些組織形式形成的工程文件。
我們先在任意一個位置(比如桌面)創建一個文件夾,命名為 stm32f103c8t6_template ,當然你命為其它名字也可以。
創建的工程模板由下面 5 個目錄構成:
這 5 個目錄是做什么用的呢?具體作用如下表所示:
文件夾名稱 | 作用 |
---|---|
Drivers | 存放與硬件相關的驅動層文件 |
Middlewares | 存放中間層文件 |
Output | 存放工程編譯輸出文件 |
Projects | 存放 MDK 工程文件 |
User | 存放 HAL 庫用戶配置文件、main.c、中斷處理文件,以及分散加載文件 |
接下來我們就具體來講講這 5 個目錄文件到底要放一些什么文件。
3.1 Drivers文件夾
Drivers 文件夾里面又包含了 4 個文件夾,它們的作用如下:
文件夾名稱 | 作用 |
---|---|
BSP | 存放開發板板級支持包驅動代碼,如各種外設驅動 |
CMSIS | 存放 CMSIS 底層代碼,如啟動文件(.s 文件)等 |
SYSTEM | 存放系統級核心驅動代碼,如 sys.c、delay.c 和 usart.c 等 |
STM32F1xx_HAL_Driver | 存放 ST 提供的 F1 系列 HAL 庫驅動源碼 |
3.1.1 BSP文件夾
我們平時所寫的 LED 驅動、蜂鳴器驅動、ESP8266驅動等等,都是放在這個目錄下面。
但由于咱這是工程模板,就先不考慮這些驅動了,所以這個目錄就暫時為空就好,等后面用到什么外設再具體添加對應的文件即可。
3.1.2 CMSIS文件夾
將官方提供的固件包下載,然后按下圖提示進到 CMSIS 目錄。
但這個 CMSIS 目錄太過于龐大了,我們可以按以下步驟進行精簡。
此外,在 CMSIS 文件夾下還需要拷備一個 Include 目錄,但這個目錄我也不知道哪里去搞,大家可以從我給大家提供的模板工程里直接復制即可。
或者你也可以使用 STM32CubeMX 隨便生成一個工程文件,然后找到下面這些文件,直接拷過來即可。
3.1.3 SYSTEM文件夾
這個文件夾主要存放的是一些常用的系統級核心驅動代碼,比如說時鐘配置、延時函數、串口等等,像這些配置都是非常經常用到,我們沒必要每次都自己手寫,直接復用即可。
在這里我們直接使用正點原子給我們提供的三個模塊代碼,沒法必要自己造輪子。
找到任何一個正點原子的項目(HAL版本),然后把整個 SYSTEM 文件夾拷備到 Drivers 目錄下。
3.1.4 STM32F1xx_HAL_Driver文件夾
ST 公司提供的 HAL 庫驅動源碼都是放在這個文件夾里,這個直接從固件包里拷過來就可以了,路徑如下:
這里使用的是 V1.8.5 ,當前最新版。
但進到這個目錄后會發現,里面有很多東西,我們刪掉其余的內容,只保留 Inc 及 Src 這兩個文件夾即可。
至此,drivers 文件夾全部處理完畢,如下圖示:
3.2 Middlewares文件夾
這個文件夾主要存放的是中間層代碼(組件/Lib 等),比如:FATFS、USB、LWIP、FreeRTOS,各種 GUI 等等。但作為模板工程,這些東西我們就先不添加,整個文件夾留空即可。
3.3 Output文件夾
該文件夾用于存放編譯器編譯工程輸出的中間文件,比如:.hex、.bin、.o 文件等,所以我們暫時無需主動往里面放東西。
3.4 Projects文件夾
該文件夾用于存放編譯器的工程文件。不同的開發工具所產生的工程文件是不一樣的,常見的開發工具有:MDK、IAR ,等等。但我們最常用的還是 MDK ,所以我們就可以在這個文件夾下創建一個 MDK-ARM 文件夾。
如果你使用其它開發工具,那么就創建一個對應的文件夾就可以了。
3.5 User文件夾
該文件夾用于存放用戶編寫的代碼,如:HAL 庫用戶配置文件、main.c 文件、中斷處理文件,以及分散加載文件等。
在這個文件夾里,我們需要將下面那三個文件拷貝到這里來:
3.6 項目工程文件夾樹狀圖
4. 新建工程框架
如果沒有看到下圖中上面那個紅框的內容,請閱讀這篇文章【零基礎快速上手STM32開發(手把手保姆級教程)】,將 STM32F1 系列的固件包安裝好。
5. 添加文件
5.1 創建目標及分組
5.2 向各分組添加文件
5.2.1 添加Startup分組文件
5.2.2 添加User分組文件
5.2.3 添加SYSTEM分組文件
5.2.4 添加驅動文件
到這一步就已經將所有的文件添加完畢了。但此時你們會發現驅動文件前面會有個小鑰匙,如下圖示:
這是因為官方的固件包的文件設置了只讀權限,我們只需要按下圖的方式取消只讀選項即可。
6. 魔術棒設置
6.1 Target選項卡
6.2 Output與Listing選項卡
6.3 C/C++選項卡
6.4 Debug選項卡
6.5 Utilities選項卡
7. 代碼修改
8. 燒錄驗證
經過以上操作,模板工程創建完成。此時可以按下圖接線燒錄驗證,工程沒問題的話,左側 LED 燈將以 500ms 間隔閃爍。
如果不知道如何搭建 STM32 編程環境,不知道如何燒錄 STM32 代碼,可以閱讀這篇文章:
【零基礎快速上手STM32開發(手把手保姆級教程)】
審核編輯:湯梓紅
-
STM32
+關注
關注
2270文章
10906瀏覽量
356482 -
編程
+關注
關注
88文章
3623瀏覽量
93798 -
MDK
+關注
關注
4文章
209瀏覽量
32088 -
工程模板
+關注
關注
0文章
10瀏覽量
6880 -
HAL
+關注
關注
2文章
71瀏覽量
12637
原文標題:手把手帶你創建HAL版本MDK工程模板
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論