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