JS-STM32-基于STM32固件庫(kù)構(gòu)建工程_第1頁(yè)
JS-STM32-基于STM32固件庫(kù)構(gòu)建工程_第2頁(yè)
JS-STM32-基于STM32固件庫(kù)構(gòu)建工程_第3頁(yè)
JS-STM32-基于STM32固件庫(kù)構(gòu)建工程_第4頁(yè)
JS-STM32-基于STM32固件庫(kù)構(gòu)建工程_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

問(wèn)題描述在搭建啟能電子STM32平臺(tái)時(shí),首先遇到的第一個(gè)問(wèn)題就是如何構(gòu)建STM32的工程。該文檔對(duì)基于STM32固件庫(kù)構(gòu)建識(shí)項(xiàng)目流程及涉及到的其他問(wèn)題進(jìn)行說(shuō)明。STM32固件庫(kù)結(jié)構(gòu)圖圖1-1固件庫(kù)結(jié)構(gòu)圖說(shuō)明名稱描述stm32f10x.h外設(shè)API層的頭文件,也是STM32的固件庫(kù)中最重要的頭文件之一stm32f10x_it.c包含中斷處理程序stm32f10x_it.h中斷處理程序頭文件core_m3.c內(nèi)核訪問(wèn)層的源文件core_m3.h內(nèi)核訪問(wèn)層的頭文件system_stm32.c定義了系統(tǒng)的時(shí)鐘頻率、低速總線和高速總線頻率、實(shí)現(xiàn)了SystemInit()函數(shù)stm32f10x_conf.h外設(shè)配置文件及使能Debug或者Release模式misc.cCortex系列處理器硬件抽象層,可以理解為cortex內(nèi)核的軟件接口。misc.hCortex系列處理器硬件抽象層頭文件stm32f10x_ppp.c外設(shè)PPP驅(qū)動(dòng)源程序文件stm32f10x_ppp.h外設(shè)PPP的頭文件構(gòu)建工程的物理目錄我們以一般的工程為例進(jìn)行說(shuō)明,該工程存放在D:\STM32_PRJ下,創(chuàng)建如下的目錄結(jié)構(gòu)。目錄名稱描述備注Libraries存放STM32固件庫(kù)需要將STM32固件庫(kù)中Libraries的內(nèi)容全部拷貝到D:\STM32_PRJ\LibrariesOut/Bin生成項(xiàng)目的Bin文件—Out/List生成項(xiàng)目的List文件—Out/Obj項(xiàng)目輸出文件HEX文件:*.o文件:程序的目標(biāo)文件*.d文件:程序依賴文件*.__i文件:程序編譯命令文件*crf文件:程序?yàn)g覽信息文件其他類型文件Prj保存項(xiàng)目信息—User/App用戶程序目錄—User/Incl用戶程序頭文件目錄需要將stm32f10x_conf.h和stm32f10x_it.h分別拷貝該目錄下。構(gòu)件MDK工程我們以STM32的STM32F107VCT6系列芯片為例來(lái)建立項(xiàng)目。創(chuàng)建工程在MDK,選擇Project->NewProject,選擇工程保存目錄“”,工程名稱命名為“stm32_prj”。選擇CPU型號(hào)設(shè)置項(xiàng)目組織選擇Project->Manage->Components配置項(xiàng)目組織向項(xiàng)目中添加組,如下圖所示。組名描述Startup啟動(dòng)代碼目錄Lib固件庫(kù)目錄Cm3ARM-CortexM3相關(guān)代碼User用戶代碼添加文件至項(xiàng)目組名代碼列表明細(xì)說(shuō)明備注Startupstartup_stm32f10x_cl.s啟動(dòng)代碼文件見5.1Libmisc.cstm32f10x_ppp.cSTM32固件庫(kù)將固件庫(kù)的Libraries下的內(nèi)容整體拷貝到此目錄下Cm3core_cm3.csystem_stm32f10x.cARMCortex-M3相關(guān)代碼—Usermain.c用戶的程序—注意:此時(shí)stm32f10x_conf.h和stm32f10x_it.h已經(jīng)拷貝到User/Incl下。填加完畢后,并確認(rèn)后,項(xiàng)目的組織結(jié)構(gòu)如下圖:設(shè)置工程選項(xiàng)目選擇Project->OptionsforTarget…選擇項(xiàng)目輸出目錄設(shè)置項(xiàng)目輸出目錄,設(shè)置為D:\STM32_PRJ\Out\Obj設(shè)置執(zhí)行文件名稱,默認(rèn)為stm32_prj選擇輸出HEX文件選擇CreateBatchFile(?)選擇LIST設(shè)置項(xiàng)目輸出目錄,設(shè)置為D:\STM32_PRJ\Out\List設(shè)置C/C++編譯選項(xiàng)默認(rèn)編譯選項(xiàng)編譯選項(xiàng)-c編譯不鏈接--cpuCortex-M3CPU型號(hào)-g-O0關(guān)閉所有優(yōu)化選項(xiàng)--apcs=interworkARMProcedureCallStand-ard-ARM函數(shù)調(diào)用標(biāo)準(zhǔn)-I"C:\Keil\ARM\INC"頭文件目錄-I"C:\Keil\ARM\INC\ST\STM32F10x"頭文件目錄-o"..\Out\Obj\*.o"產(chǎn)生的目標(biāo)文件--omf_browse"..\Out\Obj\*.crf"產(chǎn)生和存儲(chǔ)程序的瀏覽信息--depend"..\Out\Obj\*.d"產(chǎn)生依賴文件列表相關(guān)配置:IncludePath配置如下圖:配置完后的編譯選項(xiàng)為:編譯選項(xiàng)描述-c編譯不鏈接--cpuCortex-M3CPU型號(hào)-g–W–O3關(guān)閉所有優(yōu)化選項(xiàng)--split_ldm指示編譯程序在所需要位置將LDM和STM指令分裂為兩個(gè)或更多的LDM或STM指令,以減少傳送寄存器的最大數(shù)量-I..\Libraries\STM32F10x_StdPeriph_Driver\inc指定包含頭文件目錄-I..\Libraries\CMSIS\CM3\CoreSupport-I..\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x-I..\User\Incl-I"C:\Keil\ARM\INC"-I"C:\Keil\ARM\INC\ST\STM32F10x"-DUSE_STDPERIPH_DRIVER見5.2-DSTM32F10X_CL見5.3--apcs=interworkARMProcedureCallStand-ard-ARM函數(shù)調(diào)用標(biāo)準(zhǔn)-o"..\Out\Obj\*.o"產(chǎn)生的目標(biāo)文件--omf_browse"..\Out\Obj\*.crf"產(chǎn)生和存儲(chǔ)程序的瀏覽信息--depend"..\Out\Obj\*.d"產(chǎn)生依賴文件列表問(wèn)題詳解關(guān)于STM32StartUp啟動(dòng)代碼文件的選擇啟動(dòng)代碼文件名STM32系列startup_stm32f10x_cl.s互聯(lián)型的器件,STM32F105xx,STM32F107xxstartup_stm32f10x_hd.s大容量的STM32F101xx,STM32F102xx,STM32F103xxstartup_stm32f10x_hd_vl.s大容量的STM32F100xxstartup_stm32f10x_ld.s小容量的STM32F101xx,STM32F102xx,STM32F103xxstartup_stm32f10x_ld_vl.s小容量的STM32F100xxstartup_stm32f10x_md.s中容量的STM32F101xx,STM32F102xx,STM32F103xxstartup_stm32f10x_md_vl.s中容量的STM32F100xxstartup_stm32f10x_xl.sFLASH在512K到1024K字節(jié)的STM32F101xx,STM32F102xx,STM32F103xx宏定義USE_STDPERIPH_DRIVER定義USE_STDPERIPH_DRIVER則說(shuō)明該工程將使用STM32固件庫(kù)中標(biāo)準(zhǔn)的外設(shè)庫(kù)函數(shù)。在“圖1-1”中,可以看到stm32f10x_conf.h中涵蓋了STM32中的所有標(biāo)準(zhǔn)外設(shè),而stm32f10x_conf.h又被stm32f10x.h包含。stm32f10x.h中包含stm32f10x_conf.h的代碼如下:#ifdefUSE_STDPERIPH_DRIVER#include"stm32f10x_conf.h"#endif常見問(wèn)題分析沒(méi)有宏定義USE_STDPERIPH_DRIVER沒(méi)有宏定義USE_STDPERIPH_DRIVER,則stm32f10x_conf.h便不會(huì)被包含,則不可以使用STM32固件庫(kù)中關(guān)于標(biāo)準(zhǔn)外設(shè)的庫(kù)函數(shù)。宏定義USE_STDPERIPH_DRIVER,但沒(méi)有將stm32f10x_conf.h引入工程宏定義USE_STDPERIPH_DRIVER,則stm32f10x_conf.h會(huì)被包含,但是此時(shí)包含的stm32f10x_conf.h不是STM32固件庫(kù)中的頭文件,而是Keil安裝目錄下的stm32f10x_conf.h,但是該文件中會(huì)引用stm32f10x_type.h,其中定義了類型會(huì)與stm32f10x.h中類型定義沖突。宏定義STM32F10X_CL定義STM32F10X_CL表示使用STM32互聯(lián)系列微處理器也就是STM32F105和STM32F107系列的處理器。附錄依賴文件列表core_cm3.o的依賴文件列表..\Out\Obj\core_cm3.o:..\Libraries\CMSIS\CM3\CoreSupport\core_cm3.c..\Out\Obj\core_

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論