




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
STM32標(biāo)準(zhǔn)外設(shè)庫的文件結(jié)構(gòu)解析最近考試較多,教材編寫暫停了一下,之前寫了很多,只是每一章都感覺不是特別完整,最近把其中的部分內(nèi)容貼出來一下,歡迎指正。本文內(nèi)容基于我對(duì)固件庫的理解,按照便于理解的順序進(jìn)行整理介紹,部分參考了固件庫的說明,但是也基本上重新表述并按照我理解的順序進(jìn)行重新編寫。我的目的很簡(jiǎn)單,很多人寫教程只是告訴你怎么做,不會(huì)告訴你為什么這么做,我就盡量吧前因后果都說清楚,這是我的出發(fā)點(diǎn),水平所限,難免有很大的局限性,具體不足歡迎指正。1.1基于標(biāo)準(zhǔn)外設(shè)庫的軟件開發(fā)1.1.1STM32標(biāo)準(zhǔn)外設(shè)庫概述STM32標(biāo)準(zhǔn)外設(shè)庫之前的版本也稱固件函數(shù)庫或簡(jiǎn)稱固件庫,是一個(gè)固件函數(shù)包,它由程序、數(shù)據(jù)結(jié)構(gòu)和宏組成,包括了微控制器所有外設(shè)的性能特征。該函數(shù)庫還包括每一個(gè)外設(shè)的驅(qū)動(dòng)描述和應(yīng)用實(shí)例,為開發(fā)者訪問底層硬件提供了一個(gè)中間API,通過使用固件函數(shù)庫,無需深入掌握底層硬件細(xì)節(jié),開發(fā)者就可以輕松應(yīng)用每一個(gè)外設(shè)。因此,使用固態(tài)函數(shù)庫可以大大減少用戶的程序編寫時(shí)間,進(jìn)而降低開發(fā)成本。每個(gè)外設(shè)驅(qū)動(dòng)都由一組函數(shù)組成,這組函數(shù)覆蓋了該外設(shè)所有功能。每個(gè)器件的開發(fā)都由一個(gè)通用API(applicationprogramminginterface應(yīng)用編程界面)驅(qū)動(dòng),API對(duì)該驅(qū)動(dòng)程序的結(jié)構(gòu),函數(shù)和參數(shù)名稱都進(jìn)行了標(biāo)準(zhǔn)化。ST公司2007年10月發(fā)布了V1.0版本的固件庫,MDKARM3.22之前的版本均支持該庫。2008年6月發(fā)布了V2.0版的固件庫,從2008年9月推出的MDKARM3.23版本至今均使用V2.0版本的固件庫。V3.0以后的版本相對(duì)之前的版本改動(dòng)較大,本書使用目前較新的V3.4版本。1.1.2使用標(biāo)準(zhǔn)外設(shè)庫開發(fā)的優(yōu)勢(shì)簡(jiǎn)單的說,使用標(biāo)準(zhǔn)外設(shè)庫進(jìn)行開發(fā)最大的優(yōu)勢(shì)就在于可以使開發(fā)者不用深入了解底層硬件細(xì)節(jié)就可以靈活規(guī)范的使用每一個(gè)外設(shè)。標(biāo)準(zhǔn)外設(shè)庫覆蓋了從GPIO到定時(shí)器,再到CAN、I2C、SPI、UART和ADC等等的所有標(biāo)準(zhǔn)外設(shè)。對(duì)應(yīng)的C源代碼只是用了最基本的C編程的知識(shí),所有代碼經(jīng)過嚴(yán)格測(cè)試,易于理解和使用,并且配有完整的文檔,非常方便進(jìn)行二次開發(fā)和應(yīng)用。1.1.3STM32F10XXX標(biāo)準(zhǔn)外設(shè)庫結(jié)構(gòu)與文件描述1.標(biāo)準(zhǔn)外設(shè)庫的文件結(jié)構(gòu)在上一小節(jié)中已經(jīng)介紹了使用標(biāo)準(zhǔn)外設(shè)庫的開發(fā)的優(yōu)勢(shì),因此對(duì)標(biāo)準(zhǔn)外設(shè)庫的熟悉程度直接影響到程序的編寫,下面讓我們來認(rèn)識(shí)一下STM32F10XXX的標(biāo)準(zhǔn)外設(shè)庫。STM32F10XXX的標(biāo)準(zhǔn)外設(shè)庫經(jīng)歷眾多的更新目前已經(jīng)更新到最新的3.5版本,開發(fā)環(huán)境中自帶的標(biāo)準(zhǔn)外設(shè)庫為2.0.3版本,本書中以比較穩(wěn)定而且較新的V3.4版本為基礎(chǔ)介紹標(biāo)準(zhǔn)外設(shè)庫的結(jié)構(gòu)??梢詮腟T的官方網(wǎng)站下載到各種版本的標(biāo)準(zhǔn)外設(shè)庫,首先看一下3.4版本標(biāo)準(zhǔn)外設(shè)庫的文件結(jié)構(gòu),如圖5?3所示。3.0以上版本的文件結(jié)構(gòu)大致相同,每個(gè)版本可能略有調(diào)整。圖5?3STM32F10XXXV3.4標(biāo)準(zhǔn)外設(shè)庫文件結(jié)構(gòu)表5?4中介紹了每個(gè)文件夾所包含的主要內(nèi)容。表5?4STM32F10XXXV3.4標(biāo)準(zhǔn)外設(shè)庫文件夾描述STM32F10x_StdPeriph_Lib_V3.4.0_htmresc本文件夾包含了所有的html頁面資源LibrariesCMSIS見表5?6STM32F10x_StdPeriph_Driverinc標(biāo)準(zhǔn)外設(shè)庫驅(qū)動(dòng)頭文件src標(biāo)準(zhǔn)外設(shè)庫驅(qū)動(dòng)源文件ProjectExamples標(biāo)準(zhǔn)外設(shè)庫驅(qū)動(dòng)的完整例程TemplateMDK-ARMKEILRVMDK的項(xiàng)目模板示例RIDERaisonanceRIDE的項(xiàng)目模板示例EWARMIAREWARM的項(xiàng)目模板示例UtilitiesSTM3210-EVAL本文件夾包含了用于STM3210B-EVAL和STM3210E-EVAL評(píng)估板的專用驅(qū)動(dòng)標(biāo)準(zhǔn)外設(shè)庫的第一部分是CMSIS和STM32F10x_StdPeriph_Driver,CMSIS是獨(dú)立于供應(yīng)商的Cortex-M處理器系列硬件抽象層,為芯片廠商和中間件供應(yīng)商提供了簡(jiǎn)單的處理器軟件接口,簡(jiǎn)化了軟件復(fù)用工作,降低了Cortex-M上操作系統(tǒng)的移植難度,并減少了新入門的微控制器開發(fā)者的學(xué)習(xí)曲線和新產(chǎn)品的上市時(shí)間。STM32F10x_StdPeriph_Driver則包括了分別對(duì)應(yīng)包括了所有外設(shè)對(duì)應(yīng)驅(qū)動(dòng)函數(shù),這些驅(qū)動(dòng)函數(shù)均使用C語言編寫,并提供了統(tǒng)一的易于調(diào)用的函數(shù)接口,供開發(fā)者使用。Project文件夾中則包括了ST官方的所有例程和基于不同編譯器的項(xiàng)目模板,這些例程是學(xué)習(xí)和使用STM32的重要參考。Utilities包含了相關(guān)評(píng)估板的示例程序和驅(qū)動(dòng)函數(shù),供使用官方評(píng)估板的開發(fā)者使用,很多驅(qū)動(dòng)函數(shù)同樣可以作為學(xué)習(xí)的重要參考。STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫體系結(jié)構(gòu)如圖5?4所示。圖中很好的展示了各層以及具體文件之間的聯(lián)系,各文件的具體功能說明如表5?5所示。圖5?4STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫體系結(jié)構(gòu)表5?5文件功能說明文件名功能描述具體功能說明core_cm3.hcore_cm3.cCortex-M3內(nèi)核及其設(shè)備文件訪問Cortex-M3內(nèi)核及其設(shè)備:NVIC,SysTick等訪問Cortex-M3的CPU寄存器和內(nèi)核外設(shè)的函數(shù)stm32f10x.h微控制器專用頭文件這個(gè)文件包含了STM32F10x全系列所有外設(shè)寄存器的定義(寄存器的基地址和布局)、位定義、中斷向量表、存儲(chǔ)空間的地址映射等system_stm32f10x.hsystem_stm32f10x.c微控制器專用系統(tǒng)文件函數(shù)SystemInit,用來初始化微控制器函數(shù)Sysem_ExtMemCtl,用來配置外部存儲(chǔ)器控制器。它位于文件startup_stm32f10x_xx.s/.c,在跳轉(zhuǎn)到main前調(diào)用SystemFrequncy,該值代表系統(tǒng)時(shí)鐘頻率startup_stm32f10x_Xd.s編譯器啟動(dòng)代碼微控制器專用的中斷處理程序列表(與頭文件一致)弱定義(Weak)的中斷處理程序默認(rèn)函數(shù)(可以被用戶代碼覆蓋)該文件是與編譯器相關(guān)的stm32f10x_conf.h固件庫配置文件通過更改包含的外設(shè)頭文件來選擇固件庫所使用的外設(shè),在新建程序和進(jìn)行功能變更之前應(yīng)當(dāng)首先修改對(duì)應(yīng)的配置。stm32f10x_it.hstm32f10x_it.c外設(shè)中斷函數(shù)文件用戶可以相應(yīng)的加入自己的中斷程序的代碼,對(duì)于指向同一個(gè)中斷向量的多個(gè)不同中斷請(qǐng)求,用戶可以通過判斷外設(shè)的中斷標(biāo)志位來確定準(zhǔn)確的中斷源,執(zhí)行相應(yīng)的中斷服務(wù)函數(shù)。stm32f10x_ppp.hstm32f10x_ppp.c外設(shè)驅(qū)動(dòng)函數(shù)文件包括了相關(guān)外設(shè)的初始化配置和部分功能應(yīng)用函數(shù),這部分是進(jìn)行編程功能實(shí)現(xiàn)的重要組成部分。Application.c用戶文件用戶程序文件,通過標(biāo)準(zhǔn)外設(shè)庫提供的接口進(jìn)行相應(yīng)的外設(shè)配置和功能設(shè)計(jì)。2.基于CMSIS標(biāo)準(zhǔn)的軟件架構(gòu)根據(jù)調(diào)查研究,軟件開發(fā)已經(jīng)被嵌入式行業(yè)公認(rèn)為最主要的開發(fā)成本。對(duì)于ARM公司來說,一個(gè)ARM內(nèi)核往往會(huì)授權(quán)給多個(gè)廠家,生產(chǎn)種類繁多的產(chǎn)品,如果沒有一個(gè)通用的軟件接口標(biāo)準(zhǔn),那么當(dāng)開發(fā)者在使用不同廠家的芯片時(shí)將極大的增加了軟件開發(fā)成本,因此,ARM與Atmel、IAR、Keil、hami-naryMicro、Micrium、NXP、SEGGER和ST等諸多芯片和軟件廠商合作,將所有Cortex芯片廠商產(chǎn)品的軟件接口標(biāo)準(zhǔn)化,制定了CMSIS標(biāo)準(zhǔn)。此舉意在降低軟件開發(fā)成本,尤其針對(duì)新設(shè)備項(xiàng)目開發(fā),或者將已有軟件移植到其他芯片廠商提供的基于Cortex處理器的微控制器的情況。有了該標(biāo)準(zhǔn),芯片廠商就能夠?qū)⑺麄兊馁Y源專注于產(chǎn)品外設(shè)特性的差異化,并且消除對(duì)微控制器進(jìn)行編程時(shí)需要維持的不同的、互相不兼容的標(biāo)準(zhǔn)的需求,從而達(dá)到降低開發(fā)成本的目的。如圖5?5所示,基于CMSIS標(biāo)準(zhǔn)的軟件架構(gòu)主要分為以下4層:用戶應(yīng)用層、操作系統(tǒng)及中間件接口層、CMSIS層、硬件寄存器層。其中CMSIS層起著承上啟下的作用:一方面該層對(duì)硬件寄存器層進(jìn)行統(tǒng)一實(shí)現(xiàn),屏蔽了不同廠商對(duì)Cortex-M系列微處理器核內(nèi)外設(shè)寄存器的不同定義;另一方面又向上層的操作系統(tǒng)及中間件接口層和應(yīng)用層提供接口,簡(jiǎn)化了應(yīng)用程序開發(fā)難度,使開發(fā)人員能夠在完全透明的情況下進(jìn)行應(yīng)用程序開發(fā)。也正是如此,CMSIS層的實(shí)現(xiàn)相對(duì)復(fù)雜。圖5?5CMSIS標(biāo)準(zhǔn)的軟件架構(gòu)層主要分為以下3個(gè)部分:(1)核內(nèi)外設(shè)訪問層(CPAL,CorePeripheralAccessLayer):該層由ARM負(fù)責(zé)實(shí)現(xiàn)。包括對(duì)寄存器名稱、地址的定義,對(duì)核寄存器、NVIC、調(diào)試子系統(tǒng)的訪問接口定義以及對(duì)特殊用途寄存器的訪問接口(例如:CONTROL,xPSR)定義。由于對(duì)特殊寄存器的訪問以內(nèi)聯(lián)方式定義,所以針對(duì)不同的編譯器ARM統(tǒng)一用來屏蔽差異。該層定義的接口函數(shù)均是可重入的。(2)片上外設(shè)訪問層(DPAL,DevicePeripheralAccessLayer):該層由芯片廠商負(fù)責(zé)實(shí)現(xiàn)。該層的實(shí)現(xiàn)與CPAL類似,負(fù)責(zé)對(duì)硬件寄存器地址以及外設(shè)訪問接口進(jìn)行定義。該層可調(diào)用CPAL層提供的接口函數(shù)同時(shí)根據(jù)設(shè)備特性對(duì)異常向量表進(jìn)行擴(kuò)展,以處理相應(yīng)外設(shè)的中斷請(qǐng)求。(3)外設(shè)訪問函數(shù)(AFP,AccessFunctionsforPeripherals):該層也由芯片廠商負(fù)責(zé)實(shí)現(xiàn),主要是提供訪問片上外設(shè)的訪問函數(shù),這一部分是可選的。對(duì)一個(gè)Cortex-M微控制系統(tǒng)而言,CMSIS通過以上三個(gè)部分實(shí)現(xiàn)了:l定義了訪問外設(shè)寄存器和異常向量的通用方法;l定義了核內(nèi)外設(shè)的寄存器名稱和核異常向量的名稱;l為RTOS核定義了與設(shè)備獨(dú)立
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度電影投資與分紅協(xié)議
- 二零二五年度公司對(duì)公司跨境電商物流借款合同
- 二零二五年度離婚后再婚無子女家庭財(cái)產(chǎn)分割及共同生活協(xié)議
- 2025年度網(wǎng)絡(luò)安全企業(yè)員工入職保密與競(jìng)業(yè)限制合同
- 二零二五年度煙草專賣許可證及區(qū)域市場(chǎng)分銷權(quán)轉(zhuǎn)讓合同
- 2025年度特種作業(yè)安全協(xié)議書:包工頭與工人安全保障
- 二零二五年度汽修廠汽車維修市場(chǎng)分析承包協(xié)議
- 2025年度新能源儲(chǔ)能技術(shù)公司成立合作協(xié)議
- 幼兒園實(shí)習(xí)教師實(shí)習(xí)期間安全責(zé)任及意外傷害賠償合同
- 部編版小學(xué)道德與法治五年級(jí)下冊(cè)1《讀懂彼此的心》課件
- 出口貨物稅收函調(diào)系統(tǒng)課件
- 初中物理教育科學(xué)八年級(jí)下冊(cè)第八章力與運(yùn)動(dòng)-力的合成PPT
- 消渴病中醫(yī)護(hù)理的方案課件
- 抗抑郁藥物神經(jīng)遞質(zhì)的藥理課件
- 特殊兒童教育與康復(fù)課件
- 水質(zhì)分析題庫
- 深靜脈血栓形成的診斷和治療指南(第三版)解讀資料講解課件
- 人教版小學(xué)一年級(jí)美術(shù)上冊(cè)全冊(cè)課件
- 統(tǒng)編人教部編版道德與法治四年級(jí)下冊(cè)教材解讀教師教材培訓(xùn)課件
- 履約專項(xiàng)檢查表
- 成功八步課件
評(píng)論
0/150
提交評(píng)論