STM32學(xué)習(xí)筆記----keil工程的建立
1、keil編譯的三個(gè)按鍵的功能
A、第一個(gè)按鈕:Translate就是翻譯當(dāng)下修改過(guò)的文件,說(shuō)明白點(diǎn)就是檢查下有沒(méi)有語(yǔ)法錯(cuò)誤,并不會(huì)去鏈接庫(kù)文件,也不會(huì)生成可執(zhí)行文件。
B、第二個(gè)按鈕:Build就是編譯當(dāng)下修改過(guò)的文件,它包含了語(yǔ)法檢查,鏈
接動(dòng)態(tài)庫(kù)文件,生成可執(zhí)行文件。
C、第三個(gè)按鈕:Rebuild重新編譯整個(gè)工程,跟Build這個(gè)按鈕實(shí)現(xiàn)的功能
是一樣的,但有所不同的是它編譯的是整個(gè)工程的所有文件,耗時(shí)巨大。
綜上:當(dāng)我們編輯好我們的程序之后,只需要用第二個(gè)Build按鈕就可以,
即方便又省時(shí)。第一個(gè)跟第三個(gè)按鈕用的比較少
2、core_cm3.c跟啟動(dòng)文件一樣都是底層文件,都是由ARM公司提供的,遵
守CMSIS標(biāo)準(zhǔn),即所有CM3芯片的庫(kù)都帶有這個(gè)文件,這樣軟件在不同的
CM3芯片的移植工作就得以簡(jiǎn)化。
3、system_stm32f10x.c,是由ST公司提供的,遵守CMSIS標(biāo)準(zhǔn)。該文件
的功能是設(shè)置系統(tǒng)時(shí)鐘和總線(xiàn)時(shí)鐘,system_stm32f10x.c在實(shí)現(xiàn)系統(tǒng)時(shí)鐘的時(shí)候要用到PLL(鎖相環(huán)),這就需要操作寄存器,寄存器都是以存儲(chǔ)器映射的方式來(lái)訪(fǎng)問(wèn)的,所以該文件中包含了stm32f10x.h這個(gè)頭文件。
4、stm32f10x.h定義寄存器的地址及使用的結(jié)構(gòu)體封裝。
5、
6、.chm文件在NTFS硬盤(pán)中是打不開(kāi)的,我們需要選中文件,右鍵屬性,然后點(diǎn)擊解除鎖定即可。
7、USER用來(lái)存放工程文件和用戶(hù)代碼,包括主函數(shù)main.c
Fwlib用來(lái)存放STM32庫(kù)里面的inc和src這兩個(gè)文件,這兩個(gè)文件包含了芯片上的所有驅(qū)動(dòng)。
CMSIS用來(lái)存放庫(kù)為我們自帶的啟動(dòng)文件和一些M3系列通用的文件。CMSIS里面存放的文件是適合任何M3內(nèi)核的單片機(jī)。
Output用來(lái)保存軟件編譯后輸出的文件。
Listing用來(lái)存放一些編譯過(guò)程中產(chǎn)生的文件,具體可以不用了解。
8、建立工程的一般步驟:
a、3.5.03.5.0STM32F10x_StdPeriph_Lib_V3.5.0LibrariesSTM32F10x_Std
Periph_Driver的inc跟src拷貝到Fwlib
b、3.5.03.5.0STM32F10x_StdPeriph_Lib_V3.5.0ProjectSTM32F10x_StdPe
riph_Template main.c、stm32f10x_conf.h、stm32f10x_it.h、stm32f10x_it.c、system_stm32f10x.c拷貝到USER目錄下。
說(shuō)明:
stm32f10x_it.h、stm32f10x_it.c這兩個(gè)文件里面是中斷函數(shù),里面為空,并沒(méi)喲寫(xiě)任何的中斷服務(wù)程序。stm32f10x_conf.h是用戶(hù)需要配置的頭文件,當(dāng)我們需要用到芯片的某部分外設(shè)的驅(qū)動(dòng)時(shí),我們只需要在該文件下將該驅(qū)動(dòng)的頭文件包含進(jìn)來(lái)即可,片上外設(shè)的驅(qū)動(dòng)在src文件夾中,inc文件夾里面是她們的頭文件。system_stm32f10x.c是ARM公司提供的符合CMSIS標(biāo)準(zhǔn)的庫(kù)文件。
c、將3.5.03.5.0STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3Devi
ceSupportSTSTM32F10xstartuparm的全部文件拷貝進(jìn)CMSISstartup文件夾下。
d、把3.5.03.5.0STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3Core
Support的core_cm3.c和core_cm3.h也拷貝到STM32-TemplateCMSIS文件夾下。
e、把3.5.03.5.0STM32F10x_StdPeriph_Lib_V3.5.0LibrariesCMSISCM3Devi
ceSupportSTSTM32F10x的stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h拷貝到STM32-TemplateCMSIS文件夾下。
f、在keil中新建四個(gè)組,分別命名為STARTCODE、USER、FWlib、CMSIS。STARTCODE從名字就可以看得出我們是用它來(lái)放我們的啟動(dòng)代碼的,USER用來(lái)存放用戶(hù)自定義的應(yīng)用程序,F(xiàn)Wlib用來(lái)存放庫(kù)文件,CMSIS用來(lái)存放M3系列單片機(jī)通用的文件。
g、往各個(gè)組里添加文件。我們?cè)赟TARTCOKE里面添加startup_stm32f10x_hd.s,在USER組里面添加main.c和stm32f10x_it.c這兩個(gè)文件,在FWlib組里面添加src里面的全部驅(qū)動(dòng)文件,在CMSIS里面添加core_cm3.c和system_stm32f10x.c文件。
h、點(diǎn)擊魔術(shù)棒,選中Output和Listing的輸出文件夾
i、選中c/c++選項(xiàng)卡,在Define里面輸入添加USE_STDPERIPH_DRIVER,
STM32F10X_HD。
說(shuō)明:添加USE_STDPERIPH_DRIVER是為了屏蔽編譯器的默認(rèn)搜索路徑,轉(zhuǎn)而使用我們添加到工程中的ST的庫(kù),添加STM32F10X_HD是因?yàn)槲覀冇玫男酒谴笕萘康模砑恿薙TM32F10X_HD這個(gè)宏之后,庫(kù)文件里面為大容量定義的寄存器我們就可以用了。
j、在Include Paths欄點(diǎn)擊,在這里添加庫(kù)文件的搜索路徑,這樣就可以
屏蔽掉默認(rèn)的搜索路徑
9、stm32f10x.h這個(gè)文件中重要的內(nèi)容就是把STM32的所有寄存器進(jìn)行地
址映射。