FWLib V2.0.3是一個完整的固件包,它適用于STM32F10xxx小容量,中容量和大容量產(chǎn)品。固件庫由程序,數(shù)據(jù)結(jié)構(gòu)和宏組成,覆蓋了所有外設(shè)的特征,還包括了全部標(biāo)準(zhǔn)外設(shè)的驅(qū)動和一系列示例程序。好多視頻教程都用到V2.0的固件庫,包含:examples、library、project三個文件夾。己解除默認(rèn)的只讀權(quán)限,可以直接修改使用.
STM32標(biāo)準(zhǔn)庫函數(shù)
己清除所有文件的“只讀”權(quán)限,解壓后直接使用即可從V2.0.3版本換到V3.5.0版本的固件庫,那么這樣的優(yōu)勢是什么?
主要是修改了一些bug,如果你平時沒有遇到這些bug可以不急于更換.新版的固件庫對于器件的一些新特性做了支持,所以原來的程序可能需要少做修改.
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)和位定義文件。
標(biāo)準(zhǔn)外設(shè)庫(StdPeriph_Lib)支持STM32F10xxx系列全部成員:大容量,中容量和小容量產(chǎn)品。
根據(jù)使用的STM32產(chǎn)品具體型號,用戶可以通過文件”stm32f10x.h”中的預(yù)處理define來配置標(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的作用范圍是:
● 文件”stm3210f.h”中的中斷IRQ定義
● 啟動文件中的向量表,小容量,中容量,大容量產(chǎn)品各有一個啟動文件
● 外設(shè)存儲器映像和寄存器物理地址
● 產(chǎn)品設(shè)置:外部晶振(HSE)的值等
● 系統(tǒng)配置函數(shù)
● 非STM32全系列兼容或不同型號產(chǎn)品間有差異的功能特征
注意: 這些define不會影響外設(shè)的驅(qū)動,驅(qū)動支持STM32全系列全部外設(shè)的功能特征。
STM32固件庫V2.0.3和CMSISV1.10對比:
CMSIS對STM32F10xxx固件庫(FWLib)的某些功能采用了不同的實現(xiàn)方法。下面列出主要的區(qū)
別:
● 使用標(biāo)準(zhǔn)C類型,文件<stdint.h>
● 對每一個Cortex-M3異常和STM32的IRQ,有:
─ 異常服務(wù)程序帶后綴_Handler,中斷服務(wù)程序帶后綴_IRQHandler。
─ 弱定義(Weak)的默認(rèn)異常/中斷服務(wù)程序,包含一個無限循環(huán)
─ 帶_IRQn后綴的中斷號碼“#define”
● 啟動文件更名為”startup_stm32f10x_xx.s/.c”,其中xx可以是hd,md或者ld,分別對應(yīng)大容
量,中容量,小容量產(chǎn)品。
● 只提供精簡的NVIC和SysTick函數(shù),其他一些常用函數(shù)作為一個新的驅(qū)動加入
STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫,文件命名為misc.h/.c。
● 某些宏的名字與STM32F10xxx固件庫V2.0.3中的相同功能宏不同(見表1)
表1 STM32F10xxx固件庫V2.0.3與CMSIS宏對比(1)
STM32宏 CMSIS宏 STM32宏 CMSIS宏
1. 加粗的字體表示這些宏有變化。灰色的充填色表示這些改動影響到固件庫(FWLib)的驅(qū)動或者例程。