1.1 基于標(biāo)準(zhǔn)外設(shè)庫的軟件開發(fā) 1.1.1 STM32標(biāo)準(zhǔn)外設(shè)庫概述
STM32標(biāo)準(zhǔn)外設(shè)庫之前的版本也稱固件函數(shù)庫或簡稱固件庫,是一個固件函數(shù)包,它由程序、數(shù)據(jù)結(jié)構(gòu)和宏組成,包括了微控制器所有外設(shè)的性能特征。該函數(shù)庫還包括每一個外設(shè)的驅(qū)動描述和應(yīng)用實(shí)例,為開發(fā)者訪問底層硬件提供了一個中間API,通過使用固件函數(shù)庫,無需深入掌握底層硬件細(xì)節(jié),開發(fā)者就可以輕松應(yīng)用每一個外設(shè)。因此,使用固態(tài)函數(shù)庫可以大大減少用戶的程序編寫時間,進(jìn)而降低開發(fā)成本。每個外設(shè)驅(qū)動都由一組函數(shù)組成,這組函數(shù)覆蓋了該外設(shè)所有功能。每個器件的開發(fā)都由一個通用API (application programming interface 應(yīng)用編程界面)驅(qū)動,API對該驅(qū)動程序的結(jié)構(gòu),函數(shù)和參數(shù)名稱都進(jìn)行了標(biāo)準(zhǔn)化。
ST公司2007年10月發(fā)布了V1.0版本的固件庫,MDK ARM3.22之前的版本均支持該庫。2008年6月發(fā)布了V2.0版的固件庫,從2008年9月推出的MDK ARM3.23版本至今均使用V2.0版本的固件庫。V3.0以后的版本相對之前的版本改動較大,本書使用目前較新的V3.4版本。
1.1.2 使用標(biāo)準(zhǔn)外設(shè)庫開發(fā)的優(yōu)勢簡單的說,使用標(biāo)準(zhǔn)外設(shè)庫進(jìn)行開發(fā)最大的優(yōu)勢就在于可以使開發(fā)者不用深入了解底層硬件細(xì)節(jié)就可以靈活規(guī)范的使用每一個外設(shè)。標(biāo)準(zhǔn)外設(shè)庫覆蓋了從GPIO到定時器,再到CAN、I2C、SPI、UART和ADC等等的所有標(biāo)準(zhǔn)外設(shè)。對應(yīng)的C源代碼只是用了最基本的C編程的知識,所有代碼經(jīng)過嚴(yán)格測試,易于理解和使用,并且配有完整的文檔,非常方便進(jìn)行二次開發(fā)和應(yīng)用。
1.1.3 STM32F10XXX標(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)勢,因此對標(biāo)準(zhǔn)外設(shè)庫的熟悉程度直接影響到程序的編寫,下面讓我們來認(rèn)識一下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)。
可以從ST的官方網(wǎng)站下載到各種版本的標(biāo)準(zhǔn)外設(shè)庫,首先看一下3.4版本標(biāo)準(zhǔn)外設(shè)庫的文件結(jié)構(gòu),如圖 5?3所示。3.0以上版本的文件結(jié)構(gòu)大致相同,每個版本可能略有調(diào)整。
![clip_image002[19] clip_image002[19]](http://cshb120.cn/uploads/allimg/171124/1KRM645_0.jpg)
圖 5?3 STM32F10XXX V3.4標(biāo)準(zhǔn)外設(shè)庫文件結(jié)構(gòu)
表 5?4中介紹了每個文件夾所包含的主要內(nèi)容。
表 5?4 STM32F10XXX V3.4標(biāo)準(zhǔn)外設(shè)庫文件夾描述
STM32F10x_StdPeriph_Lib_V3.4.0
_htmresc
本文件夾包含了所有的html頁面資源
Libraries
CMSIS
見表 5?6
STM32F10x_StdPeriph_Driver
inc
標(biāo)準(zhǔn)外設(shè)庫驅(qū)動頭文件
src
標(biāo)準(zhǔn)外設(shè)庫驅(qū)動源文件
Project
Examples
標(biāo)準(zhǔn)外設(shè)庫驅(qū)動的完整例程
Template
MDK-ARM
KEIL RVMDK的項(xiàng)目模板示例
RIDE
Raisonance RIDE的項(xiàng)目模板示例
EWARM
IAR EWARM的項(xiàng)目模板示例
Utilities
STM3210-EVAL
本文件夾包含了用于STM3210B-EVAL和STM3210E-EVAL評估板的專用驅(qū)動
標(biāo)準(zhǔn)外設(shè)庫的第一部分是CMSIS 和STM32F10x_StdPeriph_Driver,CMSIS 是獨(dú)立于供應(yīng)商的Cortex-M 處理器系列硬件抽象層,為芯片廠商和中間件供應(yīng)商提供了簡單的處理器軟件接口,簡化了軟件復(fù)用工作,降低了Cortex-M 上操作系統(tǒng)的移植難度,并減少了新入門的微控制器開發(fā)者的學(xué)習(xí)曲線和新產(chǎn)品的上市時間。STM32F10x_StdPeriph_Driver則包括了分別對應(yīng)包括了所有外設(shè)對應(yīng)驅(qū)動函數(shù),這些驅(qū)動函數(shù)均使用C語言編寫,并提供了統(tǒng)一的易于調(diào)用的函數(shù)接口,供開發(fā)者使用。Project文件夾中則包括了ST官方的所有例程和基于不同編譯器的項(xiàng)目模板,這些例程是學(xué)習(xí)和使用STM32的重要參考。Utilities包含了相關(guān)評估板的示例程序和驅(qū)動函數(shù),供使用官方評估板的開發(fā)者使用,很多驅(qū)動函數(shù)同樣可以作為學(xué)習(xí)的重要參考。
STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫體系結(jié)構(gòu)如圖 5?4所示。圖中很好的展示了各層以及具體文件之間的聯(lián)系,各文件的具體功能說明如表 5?5所示。
![clip_image004[6] clip_image004[6]](http://cshb120.cn/uploads/allimg/171124/1KP134L_0.png)
圖 5?4 STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫體系結(jié)構(gòu)
表 5?5 文件功能說明
文件名
功能描述
具體功能說明
core_cm3.h
core_cm3.c
Cortex-M3內(nèi)核及其設(shè)備文件
訪問Cortex-M3內(nèi)核及其設(shè)備:NVIC,SysTick等
訪問Cortex-M3的CPU寄存器和內(nèi)核外設(shè)的函數(shù)
stm32f10x.h
微控制器專用頭文件
電子發(fā)燒友App













評論