官方標(biāo)準(zhǔn)庫下載文件解讀:
1._htmresc:ST公司的兩張圖片(不管)
2.Utilities:? 實(shí)用程序次企,ST公司寫好了的一些程序,比如IIC通信等等豌鹤,用到的話就可以添加到工程直接用嗜价,比較方便
3.Release_Notes.html:STM32F10x標(biāo)準(zhǔn)外設(shè)庫發(fā)行說明湾宙,對(duì)各個(gè)版本的區(qū)別,即發(fā)行說明
4.stm32f10x_stdperiph_lib_um.chm:此文件包含標(biāo)準(zhǔn)庫所有文件解愤,不必打開每一個(gè)文件進(jìn)行查看镇饺,相當(dāng)與一個(gè)圖書室管理員,要找啥子文件就可以在這里面找到并且點(diǎn)進(jìn)去看送讲,文件里面的東西
分割線奸笤,以上四個(gè)文件,很少使用哼鬓,創(chuàng)建工程的關(guān)鍵在于理解接下來的文件
5.Libraries:庫文件监右,包含了啟動(dòng)文件和庫文件,文件結(jié)構(gòu)圖如下所示
文件結(jié)構(gòu)圖解讀
CMISI:英文全稱:Cortex Microcontroller Software Interface Standard(Cortex系列處理器硬件抽象層)可以理解? ?????????????為cortex內(nèi)核的軟件接口异希。
CM3:? 包含了CoreSupport(內(nèi)核支持)和DeviceSupport(設(shè)備支持)
core_cm3.c和core_cm3.h:其中CoreSupport中的core_cm3.c和.h文件最好不要更改健盒,因?yàn)槭荢T公司提供的? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???????????????????????CMISI核心
DeviceSupport:中包含的是(startup)啟動(dòng)文件和系統(tǒng)配置文件(system_stm32f10x.c和system_stm32f10x.h)以及所有外設(shè)的頭文件(stm32f10x.h)
startup:其中包含了四種不同編譯環(huán)境的啟動(dòng)文件,但是我們只用arm這種文件,因?yàn)槲覀兪褂玫氖莐eil
點(diǎn)進(jìn)去之后發(fā)現(xiàn)還是有很多文件扣癣,目前理解的只有這幾個(gè)
? ? ? ? ? ? ? 文件? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 含義? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 容量范圍
startup_stm32f10x_ld.s? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 小容量啟動(dòng)文件? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?FLASH<=32K
startup_stm32f10x_md.s? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 中容量啟動(dòng)文件? ? ? ? ? ? ? ? ? ? ? ? ? ? 64K<=FLASH<=128K
startup_stm32f10x_hd.s? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?大容量啟動(dòng)文件? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?256K<FLASH
芯片啟動(dòng)文件的作用:①程序開始運(yùn)行后使其進(jìn)入系統(tǒng)初始化函數(shù)(Systemlnit)完成對(duì)芯片時(shí)鐘系統(tǒng)的初始化惰帽,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 各種管腳的初始化等? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ②初始化完成后讓程序進(jìn)入main函數(shù)執(zhí)行
STM32F10x_StdPeriph_Driver:包含的是外設(shè)源文件(src)和外設(shè)頭文件(inc),通常是互相搭配使用搏色,對(duì)應(yīng)的.c就有對(duì)應(yīng)的.h善茎,通常工程只添加.c文件
6.? ?Project文件:包含STM32F10x_StdPeriph_Examples(外設(shè)例子)和STM32F10x_StdPeriph_Template(外設(shè)模板)
文件結(jié)構(gòu)圖解讀
STM32F10x_StdPeriph_Examples:包含標(biāo)準(zhǔn)庫所有外設(shè)例程,例程中是由ST公司提供的模塊代碼频轿,可以根據(jù)需要直接使用
STM32F10x_StdPeriph_Template:包含了多個(gè)不同編譯環(huán)境下的庫開發(fā)工程模板垂涯,這個(gè)模板根據(jù)個(gè)人喜好來選擇用還是不用,或者是效仿一個(gè)模板
stm32f10x_conf.h? ? ? ? ? ? 是配置文件
stm32f10x_it.c? ? ? ? ? ? ? ? ?是放中斷函數(shù)的航邢,對(duì)應(yīng)的是.h文件耕赘,但是其中只有9個(gè)看不懂的中斷函數(shù),所以用到其他? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 函數(shù)的時(shí)候還要去調(diào)用函數(shù)
system_stm32f10x.c? ?????系統(tǒng)初始化文件
創(chuàng)建工程步驟:
①在桌面新建一個(gè)文件夾(命名為led)儲(chǔ)存工程
②在led中添加三個(gè)文件夾膳殷,分別命名為CMISI(內(nèi)核系統(tǒng)文件以及啟動(dòng)文件(startup))
USER(用戶模板文件操骡,包含了main.c),Driver(庫文件(src以及inc))
③打開keil5赚窃,點(diǎn)擊新建工程project→New uVision project
④選擇對(duì)應(yīng)的芯片册招,已經(jīng)安裝好了對(duì)應(yīng)的pack包,所以直接選芯片就行勒极,選好后彈出來的東西×掉
⑤點(diǎn)擊下列圖標(biāo)添加文件
⑥點(diǎn)擊修改一級(jí)目錄名稱是掰,添加二級(jí)目錄,并且添加下圖所示對(duì)應(yīng)文件
注:只添加對(duì)應(yīng)的文件夾下的.c和.s文件辱匿,不要添加.h文件
注:此處目錄內(nèi)不添加system_stm32f10x.c 文件了匾七,否則會(huì)報(bào)錯(cuò)絮短,可能是因?yàn)橹貜?fù)添加了文件,因?yàn)橹暗腃MISI目錄下已經(jīng)添加過了
⑦點(diǎn)擊魔法棒工具→target 修改外部晶振為8Mhz
⑧點(diǎn)擊c/c++添加宏定義昨忆,在define加這句話:USE_STDPERIPH_DRIVER
? ?點(diǎn)擊include paths添加文件路徑丁频,如下圖所示,keil有個(gè)好處邑贴,會(huì)自動(dòng)把選擇的絕對(duì)路徑給修改為相對(duì)路徑限府,
? ?一定要添加完所有文件的路徑,不然會(huì)因?yàn)檎也坏轿募鴪?bào)錯(cuò)
注:此處添加文件目錄時(shí)痢缎,可以只添加inc胁勺,而不添加src,加了也沒問題独旷,但是剩下的兩個(gè)必須添加正確的目錄
⑨點(diǎn)擊output→點(diǎn)擊Create HEX files(生成HEX文件)
⑩刪除main.c里面的所有代碼署穗,只保留以下幾句
#include "stm32f10x.h"
#include <stdio.h>
int main(void)
{
? ? ? ? ? ?while (1)
? ? ? ? ? {
? ? ? ? ? ?}
}
以上步驟完成后直到編譯不出錯(cuò)
對(duì)以上步驟的幾個(gè)問題解讀
①
Q:????桌面新建文件夾名稱和工程目錄可以隨意修改嗎?
A:????可以寥裂,隨便改,但是案疲,最好寫成相匹配的封恰,相對(duì)應(yīng)的,不然自己添加文件的時(shí)候容易弄混淆工程目錄一旦確? ? ? ? ? ? 定好了褐啡,最好不要去再去修改文件名稱诺舔,因?yàn)闀?huì)導(dǎo)致文件目錄和對(duì)應(yīng)的文件名不匹配以產(chǎn)生錯(cuò)誤
總結(jié):其實(shí)和IAR創(chuàng)建新的工程差不多,都是宏定義添加文件备畦,文件路徑的問題低飒,記住并且練習(xí)就好了