(2) 片上外設(shè)訪問層(DPAL, Device Peripheral Access Layer):該層由芯片廠商負責(zé)實現(xiàn)。該層的實現(xiàn)與CPAL 類似,負責(zé)對硬件寄存器地址以及外設(shè)訪問接口進行定義。該層可調(diào)用CPAL 層提供的接口函數(shù)同時根據(jù)設(shè)備特性對異常向量表進行擴展,以處理相應(yīng)外設(shè)的中斷請求。
(3) 外設(shè)訪問函數(shù)(AFP, Access Functions for Peripherals):該層也由芯片廠商負責(zé)實現(xiàn),主要是提供訪問片上外設(shè)的訪問函數(shù),這一部分是可選的。
對一個Cortex-M 微控制系統(tǒng)而言,CMSIS 通過以上三個部分實現(xiàn)了:
l 定義了訪問外設(shè)寄存器和異常向量的通用方法;
l 定義了核內(nèi)外設(shè)的寄存器名稱和核異常向量的名稱;
l 為RTOS 核定義了與設(shè)備獨立的接口,包括Debug 通道。
這樣芯片廠商就能專注于對其產(chǎn)品的外設(shè)特性進行差異化,并且消除他們對微控制器進
行編程時需要維持的不同的、互相不兼容的標(biāo)準(zhǔn)需求,以達到低成本開發(fā)的目的。CMSIS中的具體文件結(jié)構(gòu)如表 5?6所示。
表 5?6 CMSIS文件夾結(jié)構(gòu)
CMSIS
Core
Documentation
CMSIS文檔
CM3
Startup
arm
MDK ARM編譯器啟動文件
startup_stm32f10x_hd.s: 大容量產(chǎn)品啟動文件
startup_stm32f10x_md.s: 中容量產(chǎn)品啟動文件
startup_stm32f10x_ld.s: 小容量產(chǎn)品啟動文件
gcc_ride7
GCC編譯器啟動文件
iar
IAR編譯器啟動文件
TrueSTUDIO
TrueSTUDIO編譯器啟動文件
本文件夾包含STMF10xxx CMSIS文件:微控制器外設(shè)訪問層和內(nèi)核設(shè)備訪問層:
core_cm3.h:CMSIS的Cortex-M3內(nèi)核設(shè)備訪問層頭文件
core_cm3.c:CMSIS的Cortex-M3內(nèi)核設(shè)備訪問層源文件
stm32f10x.h:CMSIS的Cortex-M3 STM32f10xxx微控制器外設(shè)訪問層頭文件
system_stm32f10x.h:CMSIS的Cortex-M3 STM32f10xxx微控制器外設(shè)訪問層頭文件
system_stm32f10x.c:CMSIS的Cortex-M3 STM32f10xxx微控制器外設(shè)訪問層源文件
在實際開發(fā)過程中,根據(jù)應(yīng)用程序的需要,可以采取2種方法使用標(biāo)準(zhǔn)外設(shè)庫(StdPeriph_Lib):
(1) 使用外設(shè)驅(qū)動:這時應(yīng)用程序開發(fā)基于外設(shè)驅(qū)動的API(應(yīng)用編程接口)。用戶只需要配置文件”stm32f10x_conf.h”,并使用相應(yīng)的文件”stm32f10x_ppp.h/.c”即可。
(2) 不使用外設(shè)驅(qū)動:這時應(yīng)用程序開發(fā)基于外設(shè)的寄存器結(jié)構(gòu)和位定義文件。
這兩種方法的優(yōu)缺點在“使用標(biāo)準(zhǔn)外設(shè)庫開發(fā)的優(yōu)勢”小節(jié)中已經(jīng)有了具體的介紹,這里仍要說明的是,使用使用標(biāo)準(zhǔn)外設(shè)庫進行開發(fā)可以極大的減小軟件開發(fā)的工作量,也是目前嵌入式系統(tǒng)開發(fā)的一個趨勢。
標(biāo)準(zhǔn)外設(shè)庫(StdPeriph_Lib)支持STM32F10xxx系列全部成員:大容量,中容量和小容量產(chǎn)品。從表 5?6中也可以看出,啟動文件已經(jīng)對不同的系列進行了劃分,實際開發(fā)中根據(jù)使用的STM32產(chǎn)品具體型號,用戶可以通過文件”stm32f10x.h”中的預(yù)處理define或者通過開發(fā)環(huán)境中的全局設(shè)置來配置標(biāo)準(zhǔn)外設(shè)庫(StdPeriph_Lib),一個define對應(yīng)一個產(chǎn)品系列。
下面列出支持的產(chǎn)品系列
STM32F10x_LD:STM32小容量產(chǎn)品
STM32F10x_MD:STM32中容量產(chǎn)品
STM32F10x_HD:STM32大容量產(chǎn)品
在庫文件中這些define的具體作用范圍是:
l 文件“stm3210f.h”中的中斷IRQ定義
l 啟動文件中的向量表,小容量,中容量,大容量產(chǎn)品各有一個啟動文件
l 外設(shè)存儲器映像和寄存器物理地址
l 產(chǎn)品設(shè)置:外部晶振(HSE)的值等
l 系統(tǒng)配置函數(shù)
因此通過宏定義這種方式,可以使標(biāo)準(zhǔn)外設(shè)庫適用于不同系列的產(chǎn)品,同時也方便與不同產(chǎn)品之間的軟件移植,極大的方便了軟件的開發(fā)。
1.1.4 STM32F10XXX標(biāo)準(zhǔn)外設(shè)庫的使用標(biāo)準(zhǔn)外設(shè)庫中包含了眾多的變量定義和功能函數(shù),如果不能了解他們的命名規(guī)范和使用規(guī)律將會給編程帶來很大的麻煩,本節(jié)將主要敘述標(biāo)準(zhǔn)外設(shè)庫中的相關(guān)規(guī)范,通過這些規(guī)范的學(xué)習(xí)可以更加靈活的使用固件庫,同時也將極大增強程序的規(guī)范性和易讀性,同時標(biāo)準(zhǔn)外設(shè)庫中的這種規(guī)范也值得我們在進行其他相關(guān)的開發(fā)時使用和借鑒。
1. 縮寫定義標(biāo)準(zhǔn)外設(shè)庫中的主要外設(shè)均采用了縮寫的形式,通過這些縮寫可以很容易的辨認(rèn)對應(yīng)的外設(shè)。
縮寫
外設(shè)/單元
ADC
模數(shù)轉(zhuǎn)換器
BKP
備份寄存器
CAN
控制器局域網(wǎng)模塊
CEC
CRC
CRC計算單元
DAC
數(shù)模轉(zhuǎn)換器
DBGMCU
調(diào)試支持
DMA
直接內(nèi)存存取控制器
EXTI
外部中斷事件控制器
FLASH
閃存存儲器
FSMC
靈活的靜態(tài)存儲器控制器
GPIO
通用輸入輸出
I2C
I2C接口
IWDG
獨立看門狗
PWR
電源/功耗控制
RCC
復(fù)位與時鐘控制器
RTC
實時時鐘
SDIO
SDIO接口
SPI
串行外設(shè)接口
TIM
定時器
USART
通用同步/異步收發(fā)器
WWDG
窗口看門狗
2. 命名規(guī)則
評論