新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32F10X系列微控制器標(biāo)準(zhǔn)外設(shè)庫(kù)的應(yīng)用

STM32F10X系列微控制器標(biāo)準(zhǔn)外設(shè)庫(kù)的應(yīng)用

作者: 時(shí)間:2012-08-08 來(lái)源:網(wǎng)絡(luò) 收藏

Stm32f10x系列具有3內(nèi)核結(jié)構(gòu),它集成了CM3core的中心處理器內(nèi)核和先進(jìn)的系統(tǒng)外設(shè),實(shí)現(xiàn)了內(nèi)置的中斷控制、存儲(chǔ)器保護(hù),以及系統(tǒng)的調(diào)試和跟蹤功能。在進(jìn)行嵌入式系統(tǒng)設(shè)計(jì)時(shí),控制軟件首先需要對(duì)的啟動(dòng)、系統(tǒng)時(shí)鐘、存儲(chǔ)器映射、中斷向量、異常處理等進(jìn)行設(shè)置,增加了控制軟件的前期開發(fā)時(shí)間,更加造成了初學(xué)者的難度。為了縮短開發(fā)時(shí)間、提高軟件的可移植性,同時(shí)降低開發(fā)成本,ST公司提供了標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)庫(kù),該庫(kù)集成了文件及所有外設(shè)驅(qū)動(dòng)函數(shù),由于屏蔽了不同型號(hào)微控制器之間的差異,用戶文件僅需調(diào)用相應(yīng)的庫(kù)函數(shù)便可完成系統(tǒng)配置,簡(jiǎn)化了開發(fā)流程,降低了開發(fā)難度。

1 文件結(jié)構(gòu)
為Codex微控制器軟件接口標(biāo)準(zhǔn),提供了獨(dú)立于處理器的外設(shè)、實(shí)時(shí)操作系統(tǒng)、中間組件的通用接口方法,解決了軟件組件應(yīng)用于不同Cortex核微控制器時(shí)所帶來(lái)的難題,簡(jiǎn)化了軟件復(fù)用,降低了Codex-M上操作系統(tǒng)的移植難度。

c.JPG


CMSIS的文件結(jié)構(gòu)如圖1所示(以Codex-M3為例),其中stdint.h包括對(duì)8位、16位、32位等類型指示符的定義,主要用來(lái)屏蔽不同編譯器之前的差異。core_cm3.h和core_cm3.c中包括Cortex_M3核的全局變量聲明和定義,并定義一些靜態(tài)功能函數(shù)。system_stm32.h和system_ stm 32.c是不同芯片廠商定義的系統(tǒng)初始化函數(shù)SystemInit(),以及一些指示時(shí)鐘的變量。Stm32f10x.h是提供給應(yīng)用程序的頭文件,包含core _cm3.h和system_stm32.h,定義了與特定芯片廠商相關(guān)的寄存器以及各中斷異常號(hào),并可定制M3核中的特殊設(shè)備,如MCU、中斷優(yōu)先級(jí)位數(shù)以及SysTick時(shí)鐘配置。雖然CMSIS提供的文件很多,但在應(yīng)用程序中只需包含h頭文件。

2 標(biāo)準(zhǔn)簡(jiǎn)介
ST官方提供的標(biāo)準(zhǔn)文件包括標(biāo)準(zhǔn)文件、標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)例程、各種開發(fā)環(huán)境下的模板示例、評(píng)估板專用驅(qū)動(dòng)等幾部分,其中,CMSIS和STM32F10x_StdPeriph_Driver是最重要的部分。STM32F10x_StdPeriph_Driver則包括了微控制器所有外設(shè)對(duì)應(yīng)驅(qū)動(dòng)函數(shù),這些驅(qū)動(dòng)函數(shù)均使用C語(yǔ)言編寫,并提供了統(tǒng)一的函數(shù)調(diào)用接口。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í)的重要參考。

a.JPG


標(biāo)準(zhǔn)外設(shè)庫(kù)文件之間的關(guān)系如圖2所示,每一個(gè)標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)包括源文件stm32f10x_PPP.C和頭文件stm32f10x_ppp.h兩個(gè)文件(PPP表示外設(shè),如GPIO、EXTI、I2C等),源文件中包含了相應(yīng)外設(shè)的所有驅(qū)動(dòng)函數(shù),在misc.c文件中定義了CMSIS功能的一些附加函數(shù),如對(duì)NVIC的配置等。STM32f10x.h為CMSIS Codex-M3設(shè)備外設(shè)訪問(wèn)層頭文件,包含了STM32F10x全系列所有外設(shè)寄存器的定義(寄存器的基地址和布局)、位定義、中斷向量表、存儲(chǔ)空間的地址映射,以及是否使用標(biāo)準(zhǔn)外設(shè)庫(kù)設(shè)置等。System_stm32f10x.C為CMSIS 3設(shè)備外設(shè)訪問(wèn)層系統(tǒng)文件,完成系統(tǒng)初始化及時(shí)鐘配置。Stm32f10x_conf.h為標(biāo)準(zhǔn)外設(shè)驅(qū)動(dòng)配置文件,通過(guò)更改包含的外設(shè)頭文件來(lái)選擇所使用的外設(shè),在新建程序和進(jìn)行功能變更之前應(yīng)當(dāng)首先修改對(duì)應(yīng)的配置。Stm32f10x_it.c為外設(shè)中斷函數(shù)文件,通過(guò)在相應(yīng)位置加入中斷程序代碼執(zhí)行相應(yīng)中斷操作,在實(shí)際應(yīng)用中,中斷函數(shù)也可以設(shè)置在項(xiàng)目主程序文件中,但中斷函數(shù)名必須正確。

3 基于標(biāo)準(zhǔn)外設(shè)庫(kù)的實(shí)現(xiàn)步驟
在IAR FOR ARM6.30編程環(huán)境下,采用V3.50的標(biāo)準(zhǔn)外設(shè)庫(kù),開發(fā)步驟如下:
1)首先創(chuàng)建一能夠象征項(xiàng)目含義的文件夾(如touch),并在該文件夾下創(chuàng)建名為EVARM和Library的文件夾;
2)STM32F10x_StdPeriph_Lib_V3.5.0中STM32F10x_StdPeriph_Driver和CMSIS文件夾拷貝到touch目錄下;
3)將\STM32F10x_StdPeriph_Lib_V350\Project\STM32F10x_StdPeriph_Template下的main.c、stm32f10x_confh、stm32f10x_it.c、stm32f10x_it.h拷貝到touch目錄下;
4)將\STM32F10x_StdPeriph_Lib_V350\Project\STM32F10x_StdPeriph_Template\EWARM下的stm32f10x_flashcfstm32f10x_flash_ex tsram.icf、stm32f10x_nor.icf、stm32f10x_ram.icf拷貝至/touch/EVARM;
5)打開IAR Embedded Workbench IDE,創(chuàng)建一個(gè)新的workspace,而后按照模板創(chuàng)建一個(gè)新空白項(xiàng)目;
6)為項(xiàng)目添加工作組CMSIS、StdPeriph_Driver、EVARM、User、Doc,如圖3所示;


上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉