1. 程式人生 > 實用技巧 >STM32F103ZE新建韌體庫模板

STM32F103ZE新建韌體庫模板

韌體庫介紹

韌體庫就是函式的集合,韌體庫函式的作用是向下負責與暫存器直接打交道, 向上提供使用者函式呼叫的介面(API) 。 在 51 的開發中我們常常的作法是直接操作暫存器,比如要控制某些 IO 口的狀態,我們直 接操作暫存器: P0=0x11; 而在 STM32 的開發中,我們同樣可以操作暫存器: GPIOx->BRR = 0x0011; 這種方法當然可以,但是這種方法的劣勢是你需要去掌握每個暫存器的用法,你才能正確使用 STM32,而對於 STM32 這種級別的 MCU,數百個暫存器記起來又是談何容易。於是 ST(意法 半導體)推出了官方韌體庫,韌體庫將這些暫存器底層操作都封裝起來,提供一整套介面(API) 供開發者呼叫,大多數場合下,你不需要去知道操作的是哪個暫存器,你只需要知道呼叫哪些 函式即可。

任何處理器,不管它有多麼的高階,歸根結底都是要對處理器的暫存器進行操作。但是固 件庫不是萬能的,您如果想要把 STM32 學透,光讀 STM32 韌體庫是遠遠不夠的。你還是要了 解一下 STM32 的原理,而這些原理了解了,你在進行韌體庫開發過程中才可能得心應手遊刃有餘。

建立工程

新建一個資料夾Template(自己隨意起),該目錄下四個資料夾如圖(名字也可以自己起)
在這裡插入圖片描述

Core:一些核心檔案和啟動檔案
Libiraries:韌體庫
Project:工程檔案
User:應用程式

開啟MDK5新建工程
在這裡插入圖片描述
目錄選擇之前新建的template下的User,檔名字自己取
在這裡插入圖片描述
選擇晶片型號,我這裡是STM32F03ZE


在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
專案新建後的目錄
在這裡插入圖片描述
此時點選之前新建的檔案Template下的USER後:(會出現以下檔案,點開前兩個都是空檔案)
在這裡插入圖片描述

韌體庫內容的拷貝

STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver目錄下有inc和src兩個檔案copy到Template資料夾下的LIbiiraries內
在這裡插入圖片描述
在這裡插入圖片描述
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport目錄下兩個檔案copy到之前新建的檔案Template下的CORE檔案下。
在這裡插入圖片描述
在這裡插入圖片描述
\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm目錄下還要copy一個啟動檔案到CORE。

(>128kFLASH大容量的用hd,中等的用md,<64kFLASH小的用ld)戰艦板子就用hd

在這裡插入圖片描述
在這裡插入圖片描述
Core目錄完成,內部顯示如下:
在這裡插入圖片描述
\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x目錄下copy三個檔案到USER檔案。

在這裡插入圖片描述

在這裡插入圖片描述
\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template目錄下複製以下四個檔案到USER。
在這裡插入圖片描述
在這裡插入圖片描述

將檔案匯入到工程

此時韌體庫內容的複製已經完成,現在就要在MDK5中將檔案匯入到工程。
在這裡插入圖片描述
在這裡插入圖片描述
建立三個資料夾
在這裡插入圖片描述
在這裡插入圖片描述
FWLIB:Add Files… \LibLIbiiraries\src(全部檔案)
在這裡插入圖片描述
USER:Add Files… \USER(3個.c檔案)
在這裡插入圖片描述
COREc:Add Files… \CORE(.c檔案+.s檔案)

在這裡插入圖片描述
點選魔術棒將生成的.hex檔案存在於Project(大部分人之前這個資料夾都取名為OBJ)
在這裡插入圖片描述
在這裡插入圖片描述
此時編譯會出現標頭檔案找不到的error。

需新增路徑

在這裡插入圖片描述
此時編譯會出錯(標頭檔案找不到的原因)
在這裡插入圖片描述
實際上User目錄下的這個.h檔案是沒有被匯入進去的
在這裡插入圖片描述
在這裡插入圖片描述

新增巨集定義到Define:“USE_STDPERIPH_DRIVER”,點選ok。
在這裡插入圖片描述
再次編譯就不報錯了
在這裡插入圖片描述
參考博文:https://blog.csdn.net/visual_eagle/article/details/104126122