嵌入式系統(tǒng)原理-學(xué)生課件-2014 .第章stm固件庫介紹_第1頁
嵌入式系統(tǒng)原理-學(xué)生課件-2014 .第章stm固件庫介紹_第2頁
嵌入式系統(tǒng)原理-學(xué)生課件-2014 .第章stm固件庫介紹_第3頁
嵌入式系統(tǒng)原理-學(xué)生課件-2014 .第章stm固件庫介紹_第4頁
嵌入式系統(tǒng)原理-學(xué)生課件-2014 .第章stm固件庫介紹_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余57頁可下載查看

付費(fèi)下載

下載本文檔

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

文檔簡介

STM32F固件庫嵌入式系統(tǒng)研發(fā)成本主要內(nèi)容.5.6.7.固件庫簡介CMSIS簡介STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫IO類型及數(shù)據(jù)類型異常與中斷的命名固件庫頭文件固件庫函數(shù)1.固件庫簡介?固件(Firmware)是介于軟件和硬件之間的產(chǎn)品,具有硬件抽象功能給開發(fā)者訪問底層硬件提供一個中間的API大大提高應(yīng)用程序開發(fā)效率STM32固件庫?ST公司固件庫:–STM32F10xxxFirmwareLibrary,STM32F10xFWLib–2007年,V1.0,MDK2.22之前使用–2008年,V2.0,最后版本V2.0.3,MDK3.23開始使用–2011年,V3.0,改名,與V1.0和V2.0相比,有較大改變

?STM32F10xxxFirmwareLibrary,STM32F10xFWLib,代表代表STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫V2.0.3?STM32F10xxxStandardPeripherallibrary,STM32F10xxxStdPeriph_Lib,代表STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫V3.0.0–最新版V3.5.0,MDK最新版4.2.1,兼容CMSIS(Cortex-M3微控制器軟件接口標(biāo)準(zhǔn))2.CMSIS?CMSIS(Cortex-MTMMicrocontrollerSoftwareInterfaceStandard)Cortex微控制器軟件接口標(biāo)準(zhǔn)(CortexMicrocontrollerSoftwareInterfaceStandard)是ARM和一些編譯器廠家以及半導(dǎo)體廠家共同遵循的一套標(biāo)準(zhǔn),是由ARM提出,專門針對CORTEX-M系列的標(biāo)準(zhǔn)。

在該標(biāo)準(zhǔn)的約定下,ARM和芯片廠商會提供一些通用的API接口來訪問CORTEX內(nèi)核以及一些專用外設(shè),以減少更換芯片以及開發(fā)工具等移植工作所帶來的金錢以及時間上的消耗。只要都是基于M3的芯片,代碼均是可以復(fù)用的。2.CMSIS?CMSIS(Cortex-MTMSoftwareInterfaceStandard)ARM公司與多家不同芯片和軟件供應(yīng)商緊密合作定義的提供內(nèi)核與外設(shè)、實(shí)時操作系統(tǒng)和中間設(shè)備之間的通用接口CMSIS的軟件層次?CMSIS分為以下3個軟件層次:①內(nèi)核設(shè)備訪問層CorePeripheralAccessLayer(CPAL)–內(nèi)核寄存器設(shè)備名稱定義、地址定義、助手函數(shù);–同時,為RTOS定義了獨(dú)立于微控制器的接口,包括調(diào)試通道②中間設(shè)備訪問層MiddlewareAccessLayer(MWAL)–為軟件提供訪問外設(shè)的通用方法;–芯片供應(yīng)商可修改中間設(shè)備訪問層,以適應(yīng)具體的微控制器上外設(shè)硬件的設(shè)計(jì)③微控制器外設(shè)備訪問層DevicePeripheralAccessLayer(DPAL)–提供片上所有外設(shè)的定義;–為外設(shè)提供額外的助手函數(shù)CMSIS的主要功能?CMSIS為Cortex-Mx微控制器系統(tǒng)定義了:訪問外設(shè)寄存器的通用方法和定義異常向量的通用方法。內(nèi)核設(shè)備的寄存器名稱和內(nèi)核異常向量的名稱獨(dú)立于微控制器的RTOS接口,帶調(diào)試通道中間設(shè)備組件接口(TCP/IP協(xié)議棧,閃存文件系統(tǒng))CMSIS的結(jié)構(gòu)CMSIS-外設(shè)訪問層的文件分為:①獨(dú)立于編譯器的文件:②編譯器供應(yīng)商+微控制器專用啟動文件CMSIS-外設(shè)訪問層的文件①獨(dú)立于編譯器的文件:?Cortex-M3內(nèi)核及其設(shè)備文件(core_cm3.h+core_cm3.c)訪問Cortex-M3內(nèi)核及其設(shè)備:NVIC,SysTick等訪問Cortex-M3的CPU寄存器和內(nèi)核外設(shè)的函數(shù)?微控制器專用頭文件(device.h)指定中斷號碼(與啟動文件一致)外設(shè)寄存器定義(寄存器的基地址和布局)控制微控制器其他特有的功能的函數(shù)(可選)?微控制器專用系統(tǒng)文件(system_device.c)函數(shù)SystemInit,用來初始化微控制器函數(shù)Sysem_ExtMemCtl,用來配置外部存儲器控制器。它位于文件startup_stm32f10x_xx.s/.c,在跳轉(zhuǎn)到main前調(diào)用SystemFrequncy,該值代表系統(tǒng)時鐘頻率微控制器的其他功能(可選)CMSIS-外設(shè)訪問層的文件②編譯器供應(yīng)商+微控制器專用啟動文件編譯器啟動代碼(匯編或者C)(startup_device.s)微控制器專用的中斷處理程序列表(與頭文件一致)弱定義(Weak)的中斷處理程序默認(rèn)函數(shù)(可以被用戶代碼覆蓋CMSIS文件名的定義標(biāo)準(zhǔn)–core_cm3.hCortex-M3globaldeclarationsanddefinitions,staticfunctiondefinitions–core_cm3.cCortex-M3globaldefinitions–<device>.hTop-levelheaderfile(devicespecific).Tobeincludedbyapplicationcode.Includescore_cm3.handsystem_<device>.h–system_<device>.hDevicespecificdeclarations–system_<device>.cDevicespecificdefinitions,e.g.SystemInit()CMSIS支持的工具鏈?CMSIS目前支持三大主流的工具鏈,即①ARMRealView(armcc),②IAREWARM(iccarm),③GNUCompilerCollection(gcc).CMSIS支持的工具鏈?在core_cm3.h中有如下定義:/*definecompilerspecificsymbols*/#ifdefined(__CC_ARM)#define__ASM__asm/*!<asmkeywordforarmcc*/#define__INLINE__inline/*!<inlinekeywordforarmcc*/#elifdefined(__ICCARM__)#define__ASM__asm/*!<asmkeywordforiarcc*/#define__INLINEinline/*!<inlinekeywordforiarcc.OnlyavaiableinHighoptimizationmode!*/#define__nop__no_operation/*!<nooperationintrinsiciniarcc*/#elifdefined(__GNUC__)#define__ASMasm/*!<asmkeywordforgcc*/#define__INLINEinline/*!<inlinekeywordforgcc#endif3.STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫?V3.0開始,STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫所有源文件按照Doxygen格式書寫;?用這種書寫格式的代碼能夠很便利地生成更加規(guī)范且內(nèi)在關(guān)聯(lián)性更強(qiáng)的文檔;?由Doxygen生成的CHM文件完整地描述了

ST32F10xxx標(biāo)準(zhǔn)外設(shè)庫全部組件,增強(qiáng)了程序的可讀性和可維護(hù)性。STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫體系結(jié)構(gòu)?ST改進(jìn)了STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫的體系結(jié)構(gòu)并支持CMSIS層。?根據(jù)應(yīng)用程序的需要,可以采取2種方法使用標(biāo)準(zhǔn)外設(shè)庫(StdPeriph_Lib):使用外設(shè)驅(qū)動:這時應(yīng)用程序開發(fā)基于外設(shè)驅(qū)動的

API(應(yīng)用編程接口)。用戶只需要配置文 件”stm32f10x_conf.h”,并使用相應(yīng)的文 件”stm32f10x_ppp.h/.c”即可。不使用外設(shè)驅(qū)動:這時應(yīng)用程序開發(fā)基于外設(shè)的寄存器結(jié)構(gòu)和位定義文件。STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫體系結(jié)構(gòu)?標(biāo)準(zhǔn)外設(shè)庫(StdPeriph_Lib)支持STM32F10xxx

系列全部成員:大容量,中容量和小容量產(chǎn)品。STM32F10x_LD:STM32小容量產(chǎn)品STM32F10x_MD:STM32中容量產(chǎn)品STM32F10x_HD:STM32大容量產(chǎn)品STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫體系結(jié)構(gòu)?根據(jù)使用的STM32產(chǎn)品具體型號,用戶可以通過文 件”stm32f10x.h”中的預(yù)處理define來配置標(biāo)準(zhǔn)外設(shè) 庫(StdPeriph_Lib),一個define對應(yīng)一個產(chǎn)品系列。 這些define的作用范圍是:文件”stm3210f.h”中的中斷IRQ定義啟動文件中的向量表,小容量,中容量,大容量產(chǎn)品各有一個啟動文件外設(shè)存儲器映像和寄存器物理地址產(chǎn)品設(shè)置:外部晶振(HSE)的值等系統(tǒng)配置函數(shù)非STM32全系列兼容或不同型號產(chǎn)品間有差異的功能特征STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫體系結(jié)構(gòu)?文件包含關(guān)系STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫包?為了使STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫的使用更加靈活, 也為了改進(jìn)了庫的結(jié)構(gòu),ST更新了STM32F10xxx固 件庫包,添加專用子文件夾來包含CMSIS及其外設(shè)訪問層相關(guān)文件。?STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫包重命名為STM32F10x_StdPeriph_Lib_VX.Y.Z。STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫包?STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫包結(jié)構(gòu)STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫包文件夾描述CMSIS文件夾結(jié)構(gòu)原STM32F10xxx固件庫包與新STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫包對比4.IO類型及數(shù)據(jù)了哦性4.1IO類型?Cortex-MxHAL使用標(biāo)準(zhǔn)ANSIC頭文件<stdint.h>定義的標(biāo)準(zhǔn)類型。?特別用類型限定詞IO來訪問外設(shè)的變量。?類型限定詞IO還用于外設(shè)寄存器的調(diào)式信息的自動生成。4.2數(shù)據(jù)類型5.異常與中斷的命名異常的命名NVICSTM32F10xxx中斷IRQ命名?按照CMSIS的規(guī)范,修改了STM32F10xxx中斷號碼 定義命名。所有中斷號碼的#define在它們的名稱 中都添加了后綴_IRQn。CAN1IRQ通道名稱更新NVIC驅(qū)動?從STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫中移除了NVIC驅(qū)動,因此應(yīng)用程序應(yīng)當(dāng)調(diào)用CMSIS的NVIC函數(shù)。NVIC驅(qū)動?STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫不覆蓋其他的STM32F10xxx固件庫

NVIC函數(shù)。?為了簡化NVIC和STM32中斷設(shè)置,在文件”misc.h/.c”中保留 了原有NVIC驅(qū)動的一些函數(shù)。它們是:

voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup); voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct); voidNVIC_SetVectorTable(uint32_tNVIC_VectTab,uint32_tOffset);voidNVIC_SystemLPConfig(uint8_tLowPowerMode,FunctionalState

NewState); voidSysTick_CLKSourceConfig(uint32_tSysTick_CLKSource);?在應(yīng)用程序開發(fā)中進(jìn)行中斷設(shè)置時,用戶可以選用CMSIS的

NVIC函數(shù),或者選用在文件”misc.h/.c”中原有固件庫函數(shù)。 這些函數(shù)的優(yōu)點(diǎn)是提供了相對簡單的中斷配置方法,使得用戶 無需深入研究NVIC規(guī)范。用戶程序開發(fā)6.固件庫頭文件固件庫頭文件7.固件庫函數(shù)?主要函數(shù)分類(詳見手冊)?????????????RRCResetandclockcontrolNVICNestedvectoredinterruptcontrollerEXTIExternalinterrupt/eventcontrollerSYSTICKCortexsystemtimerTIMAdvanced-controltimer, general-purposeandbasictimerGPIOGeneralpurposeI/ORTCReal-timeclockBKPBackupregistersPWRPowercontrolIWDGIndependentwatchdogWWDGWindowwatchdogDMADMAcontroller

固件庫函數(shù)主要函數(shù)分類(詳見手冊)ADCDACUSARTAnalog/digitalconverterDigital/analogconverterUniversalsynchronousasynchronousreceivertransmitterI2CSPISDIOCANFSMCFLASHDBGMCUCRCInter-integratedcircuitSerialperipheralinterfaceSDIOinterfaceController

溫馨提示

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

評論

0/150

提交評論