0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

手把手帶你創(chuàng)建HAL版本MDK工程模板

dyquk4xk2p3d ? 來(lái)源:良許Linux ? 2023-11-20 10:31 ? 次閱讀

如何快速開(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ù)以下步驟找到官方固件包:

22cf132a-8745-11ee-939d-92fbcf53809c.jpg

22d98f58-8745-11ee-939d-92fbcf53809c.jpg22eb297a-8745-11ee-939d-92fbcf53809c.jpg

但由于官網(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)成:

22f26a1e-8745-11ee-939d-92fbcf53809c.jpg

這 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 目錄。

22fec91c-8745-11ee-939d-92fbcf53809c.jpg

但這個(gè) CMSIS 目錄太過(guò)于龐大了,我們可以按以下步驟進(jìn)行精簡(jiǎn)。

230b266c-8745-11ee-939d-92fbcf53809c.jpg231aaa10-8745-11ee-939d-92fbcf53809c.jpg

此外,在 CMSIS 文件夾下還需要拷備一個(gè) Include 目錄,但這個(gè)目錄我也不知道哪里去搞,大家可以從我給大家提供的模板工程里直接復(fù)制即可。

2334fb04-8745-11ee-939d-92fbcf53809c.jpg

或者你也可以使用 STM32CubeMX 隨便生成一個(gè)工程文件,然后找到下面這些文件,直接拷過(guò)來(lái)即可。

23459af4-8745-11ee-939d-92fbcf53809c.jpg

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 目錄下。

23512b9e-8745-11ee-939d-92fbcf53809c.jpg

3.1.4 STM32F1xx_HAL_Driver文件夾

ST 公司提供的 HAL 庫(kù)驅(qū)動(dòng)源碼都是放在這個(gè)文件夾里,這個(gè)直接從固件包里拷過(guò)來(lái)就可以了,路徑如下:

235e26c8-8745-11ee-939d-92fbcf53809c.jpg

這里使用的是 V1.8.5 ,當(dāng)前最新版。

但進(jìn)到這個(gè)目錄后會(huì)發(fā)現(xiàn),里面有很多東西,我們刪掉其余的內(nèi)容,只保留 Inc 及 Src 這兩個(gè)文件夾即可。

236c329a-8745-11ee-939d-92fbcf53809c.jpg

至此,drivers 文件夾全部處理完畢,如下圖示:

2386e252-8745-11ee-939d-92fbcf53809c.jpg

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 文件夾。

2397eb74-8745-11ee-939d-92fbcf53809c.jpg

如果你使用其它開(kāi)發(fā)工具,那么就創(chuàng)建一個(gè)對(duì)應(yīng)的文件夾就可以了。

3.5 User文件夾

該文件夾用于存放用戶編寫的代碼,如:HAL 庫(kù)用戶配置文件、main.c 文件、中斷處理文件,以及分散加載文件等。

在這個(gè)文件夾里,我們需要將下面那三個(gè)文件拷貝到這里來(lái):

23a22ca6-8745-11ee-939d-92fbcf53809c.jpg23aaef26-8745-11ee-939d-92fbcf53809c.jpg

3.6 項(xiàng)目工程文件夾樹(shù)狀圖

23bb6946-8745-11ee-939d-92fbcf53809c.jpg

4. 新建工程框架

23d59488-8745-11ee-939d-92fbcf53809c.jpg23e80b2c-8745-11ee-939d-92fbcf53809c.jpg

如果沒(méi)有看到下圖中上面那個(gè)紅框的內(nèi)容,請(qǐng)閱讀這篇文章【零基礎(chǔ)快速上手STM32開(kāi)發(fā)(手把手保姆級(jí)教程)】,將 STM32F1 系列的固件包安裝好。

23f99658-8745-11ee-939d-92fbcf53809c.jpg2404110a-8745-11ee-939d-92fbcf53809c.jpg24103f20-8745-11ee-939d-92fbcf53809c.jpg

5. 添加文件

5.1 創(chuàng)建目標(biāo)及分組

241c2718-8745-11ee-939d-92fbcf53809c.jpg

5.2 向各分組添加文件

5.2.1 添加Startup分組文件

2430e180-8745-11ee-939d-92fbcf53809c.jpg

5.2.2 添加User分組文件

245157da-8745-11ee-939d-92fbcf53809c.jpg245c0e6e-8745-11ee-939d-92fbcf53809c.jpg

5.2.3 添加SYSTEM分組文件

24685390-8745-11ee-939d-92fbcf53809c.jpg

5.2.4 添加驅(qū)動(dòng)文件

247e0938-8745-11ee-939d-92fbcf53809c.jpg

到這一步就已經(jīng)將所有的文件添加完畢了。但此時(shí)你們會(huì)發(fā)現(xiàn)驅(qū)動(dòng)文件前面會(huì)有個(gè)小鑰匙,如下圖示:

24a64e8e-8745-11ee-939d-92fbcf53809c.jpg

這是因?yàn)楣俜降墓碳奈募O(shè)置了只讀權(quán)限,我們只需要按下圖的方式取消只讀選項(xiàng)即可。

24b332ac-8745-11ee-939d-92fbcf53809c.jpg

6. 魔術(shù)棒設(shè)置

6.1 Target選項(xiàng)卡

24bfc72e-8745-11ee-939d-92fbcf53809c.jpg

6.2 Output與Listing選項(xiàng)卡

24ca0afe-8745-11ee-939d-92fbcf53809c.jpg

24d73e22-8745-11ee-939d-92fbcf53809c.jpg

6.3 C/C++選項(xiàng)卡

24e68486-8745-11ee-939d-92fbcf53809c.jpg

24f7c8cc-8745-11ee-939d-92fbcf53809c.jpg

2519dd4a-8745-11ee-939d-92fbcf53809c.jpg

6.4 Debug選項(xiàng)卡

2524c14c-8745-11ee-939d-92fbcf53809c.jpg

6.5 Utilities選項(xiàng)卡

252ab1f6-8745-11ee-939d-92fbcf53809c.jpg

7. 代碼修改

2541e10a-8745-11ee-939d-92fbcf53809c.jpg

255e781a-8745-11ee-939d-92fbcf53809c.jpg

25717032-8745-11ee-939d-92fbcf53809c.jpg

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í)教程)】

257c97dc-8745-11ee-939d-92fbcf53809c.jpg

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    355980
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3615

    瀏覽量

    93731
  • MDK
    MDK
    +關(guān)注

    關(guān)注

    4

    文章

    209

    瀏覽量

    32066
  • 工程模板
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    6859
  • HAL
    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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    手把手教程:各類數(shù)字電源設(shè)計(jì)實(shí)例(程序+原理圖)

    本資料分享了數(shù)字電源設(shè)計(jì)實(shí)例,包含程序、原理圖等資料,手把手帶你獨(dú)立設(shè)計(jì)屬于自己的數(shù)字電源。
    發(fā)表于 07-07 15:13

    手把手帶你學(xué)習(xí)STM32L系列單片機(jī)(HAL庫(kù))

    參考視頻是小熊派的開(kāi)發(fā)板: 【STM32單片機(jī)學(xué)習(xí)】白嫖單片機(jī)教程——手把手帶你學(xué)習(xí)STM32L系列單片機(jī)(HAL庫(kù))首先要知道公式:定時(shí)器時(shí)間=1/(時(shí)鐘頻率/預(yù)分頻/計(jì)數(shù)周期)然后了解定時(shí)器
    發(fā)表于 08-09 06:22

    手把手教大家創(chuàng)建基于GD32F303VE項(xiàng)目的工程模板

    本博文的主要內(nèi)容是手把手教大家創(chuàng)建基于GD32F303VE項(xiàng)目的工程模板,其他系列的模板常見(jiàn)類似,均可以此博文作為參考,編譯環(huán)境基于Keil
    發(fā)表于 12-10 06:05

    工程模板創(chuàng)建步驟

    工程模板創(chuàng)建步驟1、創(chuàng)建步驟2、一些問(wèn)題ARM編譯器不能編譯1、創(chuàng)建步驟關(guān)于工程
    發(fā)表于 01-12 07:32

    手把手教你構(gòu)建一個(gè)完整的工程

    手把手教你構(gòu)建一個(gè)完整的工程
    發(fā)表于 08-03 09:54 ?33次下載
    <b class='flag-5'>手把手</b>教你構(gòu)建一個(gè)完整的<b class='flag-5'>工程</b>

    手把手教你寫批處理-批處理的介紹

    手把手教你寫批處理-批處理的介紹
    發(fā)表于 10-25 15:02 ?69次下載

    美女手把手教你如何裝機(jī)(中)

    美女手把手教你如何裝機(jī)(中) 再來(lái)是硬碟的部份,這款機(jī)殼還不錯(cuò),可以旋轉(zhuǎn)支架~
    發(fā)表于 01-27 11:14 ?1467次閱讀

    美女手把手教你如何裝機(jī)(下)

    美女手把手教你如何裝機(jī)(下) 接著下來(lái)就是今天的重頭戲,開(kāi)核蘿!~
    發(fā)表于 01-27 11:16 ?2923次閱讀

    手把手教你安裝Quartus II

    本章手把手把地教你如何安裝 Quartus II 軟件 ,并將它激活 。此外 還有USB -Blaster下載器的驅(qū)動(dòng)安裝步驟 。
    發(fā)表于 09-18 14:55 ?9次下載

    手把手教學(xué)Ansoft-Maxwell-工程仿真實(shí)例

    手把手教學(xué)Ansoft-Maxwell-工程仿真實(shí)例
    發(fā)表于 01-18 16:06 ?33次下載

    手把手教你如何開(kāi)始DSP編程

    手把手教你如何開(kāi)始DSP編程。
    發(fā)表于 04-09 11:54 ?12次下載
    <b class='flag-5'>手把手</b>教你如何開(kāi)始DSP編程

    手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)

    手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)手把手教你學(xué)LabVIEW視覺(jué)設(shè)計(jì)手把手
    發(fā)表于 03-06 01:41 ?3135次閱讀

    手把手教你開(kāi)關(guān)電源PCB排板

    手把手教你開(kāi)關(guān)電源PCB排板(新型電源技術(shù))-分享一下開(kāi)關(guān)電源PCB排板的基本要點(diǎn)及分析,以及例子講解。絕對(duì)的手把手
    發(fā)表于 09-18 12:27 ?58次下載
    <b class='flag-5'>手把手</b>教你開(kāi)關(guān)電源PCB排板

    手把手教你學(xué)FPGA仿真

    電子發(fā)燒友網(wǎng)站提供《手把手教你學(xué)FPGA仿真.pdf》資料免費(fèi)下載
    發(fā)表于 10-19 09:17 ?2次下載
    <b class='flag-5'>手把手</b>教你學(xué)FPGA仿真

    手把手帶你移植HAL庫(kù)函數(shù)

    開(kāi)發(fā)者更高效地進(jìn)行嵌入式開(kāi)發(fā)。手把手帶你移植HAL庫(kù)函數(shù)HAL庫(kù)提供了一套抽象接口,使開(kāi)發(fā)者無(wú)需直接操作底層硬件寄存器,就能實(shí)現(xiàn)對(duì)硬件的控制。這種抽象使得代碼能夠更
    的頭像 發(fā)表于 05-18 08:04 ?1906次閱讀
    <b class='flag-5'>手把手</b><b class='flag-5'>帶你</b>移植<b class='flag-5'>HAL</b>庫(kù)函數(shù)