前言
本系列文章統(tǒng)一圍繞STM32F103C8T6最小系統(tǒng)開(kāi)發(fā)板進(jìn)行記錄,如涉及其他開(kāi)發(fā)板將會(huì)特別說(shuō)明皮胡。
新建標(biāo)準(zhǔn)庫(kù)工程目錄
工程目錄創(chuàng)建
一個(gè)標(biāo)準(zhǔn)的stm32庫(kù)工程目錄包含以下內(nèi)容:
其中:
- Doc:用來(lái)存放程序說(shuō)明的文件技健,由寫(xiě)程序的人添加
- Libraries:包含兩個(gè)子目錄CMSIS和FWlib翩蘸。
- CMSIS:存放與Cortex-M3內(nèi)核相關(guān)的文件币喧,如STM32的啟動(dòng)文件悼院,內(nèi)核文件等伤为。
- FWlib:存放stm32外設(shè)驅(qū)動(dòng)文件,包含inc(頭文件)和src(源文件)兩個(gè)子目錄据途。
- Listing:存放編譯器編譯時(shí)候產(chǎn)生的C/匯編/鏈接的列表清單绞愚。
- Output:存放編譯產(chǎn)生的調(diào)試信息、hex 文件颖医、預(yù)覽信息位衩、封裝庫(kù)等。
- Project:用于存放工程文件熔萧。
- User:用于存放的main.c糖驴、stm32f10x.h 頭文件、 stm32f10x_conf.h配置文件佛致、stm32f10x_it.c和stm32f10x_it.h中斷函數(shù)文件贮缕,以及用戶編寫(xiě)的驅(qū)動(dòng)文件。
固件庫(kù)文件移植
CMSIS
在stm32官方固件庫(kù)中找到下列文件:
此處應(yīng)根據(jù)開(kāi)發(fā)板型號(hào)進(jìn)行選擇俺榆,如STM32F103C8T6為中等型號(hào)產(chǎn)品感昼,故選擇startup_stm32f10x_md.s文件。
將上述文件拷貝至CMSIS目錄下:
FWlib
將stm32外設(shè)驅(qū)動(dòng)文件拷貝至FWlib目錄下:
User
將下列文件拷貝至User目錄下:
至此罐脊,標(biāo)準(zhǔn)庫(kù)工程模板已完成搭建抑诸。
新建工程
在Keil5中新建一個(gè)工程烂琴,保存在上述Project/目錄下。
1.選擇設(shè)備型號(hào)
根據(jù)芯片型號(hào)選擇對(duì)應(yīng)的選項(xiàng):
2. 創(chuàng)建組文件夾并添加文件
點(diǎn)擊上方Manage Project items按鈕蜕乡,如圖所示創(chuàng)建組文件夾:
找到對(duì)應(yīng)文件奸绷,并將其添加至對(duì)應(yīng)的文件夾下:
目錄名 | 存放的文件 | 添加文件路徑 |
---|---|---|
STARTUP | startup_stm32f10x_md.s | \stm32_template\Libraries\CMSIS |
CMSIS | 與Cortex-M3內(nèi)核相關(guān)的文件 | \stm32_template\Libraries\CMSIS |
FWlib | 系統(tǒng)外設(shè)驅(qū)動(dòng)文件(源文件) | \stm32_template\Libraries\FWlib\src |
USER | main.c,stm32f10x_it.c | \stm32_template\User |
PERIPH | 外設(shè)驅(qū)動(dòng)文件(如LED层玲、BEEP等外設(shè)) | 暫無(wú) |
BSP | 板級(jí)支持包驅(qū)動(dòng)文件 | 暫無(wú) |
DOC | 工程說(shuō)明文件 | \stm32_template\Doc |
3. “魔法棒”配置
點(diǎn)擊“魔法棒”按鈕号醉,進(jìn)行如下配置:
-
添加宏定義USE_STDPERIPH_DRIVER
這里的宏配置對(duì)全局生效
image.png
只有USE_STDPERIPH_DRIVER宏被定義了之后,才會(huì)在stm32f10x.h
文件中包含stm32f10x_conf.h
文件辛块,進(jìn)而包含系統(tǒng)外設(shè)驅(qū)動(dòng)文件的頭文件畔派,如下圖所示:
-
添加頭文件路徑
此外,我們還需要在此處將工程所使用到的頭文件的絕對(duì)路徑添加進(jìn)來(lái)润绵,包括用戶自己寫(xiě)的頭文件:
image.png
添加頭文件路徑
-
MicroLIB選項(xiàng)
MicroLIB
- MicroLIB是KEIL自帶的簡(jiǎn)易庫(kù)
- 如使用printf函數(shù)线椰,會(huì)從串口1輸出字符串,直接默認(rèn)定向到串口1
- MicroLIB是缺省C庫(kù)的備選庫(kù)尘盼。它用于必須在極少量?jī)?nèi)存環(huán)境下運(yùn)行的深層嵌入式應(yīng)用程序憨愉。這些應(yīng)用程序不在操作系統(tǒng)中運(yùn)行
- MicroLIB不會(huì)嘗試成為符合標(biāo)準(zhǔn)的ISOC庫(kù),MicroLIB進(jìn)行了高度優(yōu)化以使代碼變得很小卿捎。它的功能比缺省C庫(kù)少配紫,并且根本不具備某些ISOC特性。某些庫(kù)函數(shù)的運(yùn)行速度也比較慢午阵,例如memcpy()
-
輸出hex可執(zhí)行文件
如果需要通過(guò)串口ISP方式燒錄程序躺孝,則需要指定hex可執(zhí)行文件生成路徑為Output文件夾,并勾選“Create HEX File”選項(xiàng)底桂。
image.png -
添加鏈接路徑
指定鏈接路徑為L(zhǎng)isting文件夾植袍。
添加鏈接路徑
資源
stm32官方固件庫(kù):https://pan.baidu.com/s/1B0tswmMOoqYDUClkc3ZG2g 提取碼:9rgh