零死角玩轉(zhuǎn)初級-4、初識stm32庫_第1頁
零死角玩轉(zhuǎn)初級-4、初識stm32庫_第2頁
零死角玩轉(zhuǎn)初級-4、初識stm32庫_第3頁
零死角玩轉(zhuǎn)初級-4、初識stm32庫_第4頁
零死角玩轉(zhuǎn)初級-4、初識stm32庫_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

0、友情《零死角玩轉(zhuǎn)STM32》系列 四個部分組成,根據(jù)野火STM32開發(fā)板舊版 寫,重新排版,更適合初學(xué)者,步步為營,從入門到精通,從奔到系統(tǒng),讓您零死角玩轉(zhuǎn)STM32。M3的世界,于野火 另外,野火團隊歷時一年精心打造的《STM32庫開發(fā)實戰(zhàn)指南》將于今年10月份由機械工業(yè) 的驚喜。是一本學(xué)習(xí)STM32必備的工具4、初STM32時,再回頭看看這一章,相信你對STM32庫又會有一個更深刻的認識。 之庫開STM3251單片機的程序開發(fā)中,直接配置51單片機的寄存器,控制的工作方式,如中斷,定時器等。配置的時候,常常要查閱寄存器表,看10。這些都是很瑣碎的、機51單片機的相對來說較簡單,而且資源很有限,所以可以STM32庫是由ST公司針對STM32提供的函數(shù)接口,即API(ApplicationProgramInterface),開發(fā)者可調(diào)用這些函數(shù)接口來配置STM32的寄存器,使開發(fā) 當(dāng)調(diào)用庫的API的時候可以不用挖空心思去了解庫底層的寄存器操作,就像當(dāng)年Cprinft()函數(shù)時只是學(xué)習(xí)它的使用格實際上,庫是架設(shè)在寄存器與用戶驅(qū)動層之間的代碼,向下處理與寄存器直接相關(guān)的配置,向上為用戶提供配置寄存器的接口。庫開發(fā)方式與直接配置寄存器方式的區(qū)別見錯誤!未找到源。4。4-開發(fā)速度程序可讀性 更直學(xué)M32,第而接器法來學(xué)習(xí)。認為這種方法直觀,能夠了解到是配置了哪些寄存器,怎樣配置寄存事實上,庫函數(shù)的底層實現(xiàn)恰恰是直接配置寄存器方式的最佳例子,想深入了解 是如何工作的話,只要追蹤到庫的最底層實現(xiàn)就能理解,相信你會為它嚴(yán)謹(jǐn)、優(yōu)美的實現(xiàn)方式而陶醉。要想 C語言,就從ST的庫開始吧。在錯誤!未找到 源。。但因為STM32有充足的資源,權(quán)衡庫的優(yōu)勢與不足,絕大部分時候, 烈爭論,但是,隨著ST庫的完善與大家對庫的了解, 實現(xiàn)方式。使讀者既能利用庫進行快速開發(fā),也能深入了解STM32的工作原言開發(fā)而不是采用匯編。相比之下,可以發(fā)現(xiàn)調(diào)用庫接口開發(fā)與直接配置寄存器開發(fā)的關(guān)系,猶如c語言與匯編的關(guān)系。見表4-14-2IT大師,“一切計算機科學(xué)的問題都可以用分層來解決?!眂,從直接配置寄存器到使用庫,從機到系統(tǒng),從操作系統(tǒng)到應(yīng)用層,無不體現(xiàn)著這樣的分層思想。開發(fā)的多了,的層次多了,會深刻地認同他這句話,分層思想在開發(fā)上體現(xiàn)得淋漓盡致,分層使得問題變得更簡單,使得能夠下層實現(xiàn)方式的差異,使得開發(fā)變 分層帶來的缺點,而對于STM32這樣高性能的 STM32結(jié)構(gòu)及庫層次關(guān)CMSIS微控制器的CPU。該內(nèi)核是ARM公司設(shè)計的一個處理器體系架構(gòu)。ARM公司 。ST公司或其它 PCCPU與主板、內(nèi)存、顯卡、硬盤的關(guān)系。見錯誤!未找到源。因為基于Cortex的某系列 廠商生產(chǎn)的Cortex微控制器 ARM與 廠商建立了CMSIS標(biāo)準(zhǔn)(CortexMicroControllerSoftwareInterface 抽象層。見錯誤!未找源。錯誤!未找 源CMSIS標(biāo)準(zhǔn)中最主要的為 可見CMSIS層位于硬件層與操作系統(tǒng)或用戶層之間,提供了與 是按照CMSIS標(biāo)準(zhǔn)建立的。 、文件簡 4-明檔 還有一個已經(jīng)編譯好的HTML文件,是庫幫助文檔,主要講的是如何使用驅(qū)動庫來編寫自己的應(yīng)用程序。說得形象一點,這個HTML就是告訴 本的2.x版本的區(qū)別還是比較大的,這點大家要注意 需要把libraries 并查閱庫幫助文檔來了解ST提供的庫函數(shù),這個文檔說明了每一個庫函數(shù)的進入Libraries文件夾看到,關(guān)于內(nèi)核與外設(shè)的庫文件分別存放在和STM32F10x_StdPeriph_Driver文件夾Libraries\CMSIS\CM3文件夾下又分為CoreSupportDeviceSupport文件夾core_cm3.cCoreSupport中的是位CMSIS標(biāo)準(zhǔn)的核內(nèi)設(shè)備函M3核通用的源文件core_cm3.c和頭文件core_cm3.h,它們的作用是為那些采用Cortex-M3核設(shè)計SOC的商設(shè)計的外設(shè)提供一個進入M3內(nèi)核的接口。這兩個文件在其它公司的M3系列也是相同的。至于這些功能是怎樣用源碼實現(xiàn)的,可以不用管它,只需把這個文件加進的工程文件即可,有的朋友可以深究。core_cm3.c文件還有一些與編譯器相關(guān)條件編譯語句,用于不同編譯器的差異,在開發(fā)時不用管這部分,有可以了解一下。里面包含了一些跟編譯器相關(guān)的信息,如:RealViewCompiler(RVMDK),ICCCompiler(IAR),GNUCompiler。/*definecompilerspecificsymbols

使用RVMDK#ifdefined(#define#define

譯器時的嵌入?yún)R#elifdefined(ICCARM#define#define#elif #define

)IAR編IAR編譯器的形#elif #define

-第10頁1./*exact-widthsignedintegertypes signed charint8_t;intint16_t;int/*exact-widthunsignedintegertypestypedef chartypedefunsigned inttypedef inttypedef int64uint64_t;ANSIC文件,是獨立于處理器之外的,就像熟知的Cstdio.h文件一樣。位于RVMDK這個的安裝下,主要作用是提供一些新類型這些新類型定義了在不同 ,出現(xiàn)的諸如int的大小是16位,還是32位的差異。所以在以后的程序中,都將使用新類型如int8_t、int16_t??免這樣使用,在這里提出來是因為初學(xué)時如果碰到這樣的舊類型讓人一頭霧u8、u16、u32這些的定義core_cm3.c跟啟動文件一樣都是底層文件,都是由ARM公司提供的,遵守CMSIS標(biāo)準(zhǔn),即所有CM3的庫都帶有這個文件,這樣在不同的CM3的移植工作就得以簡化。system_stm32f10x.c在DeviceSupport文件夾下的是啟動文件、外設(shè)寄存器定義&中斷向量定義的一些文件,這是由ST公司提供的。見圖4-2STM32STM32裝system_stm32f10x.c,是由ST公司提供的,遵守CMSIS標(biāo)準(zhǔn)。該文件的功能是設(shè)置系統(tǒng)時鐘和總線時鐘,M351單片機復(fù)雜得多,并不是說8M的晶振,M38M為時鐘協(xié)調(diào)整個處理器的工作。還要通過M3核的核內(nèi)寄存器來對8M system_stm32f10x.c在實現(xiàn)系統(tǒng)時鐘的時候要用到PLL(鎖相環(huán)),這就需要操作寄存器,寄存器都是以器的方式來的,所以該文件中包含了stm32f10x.h這個頭文件。stm32f10x.h 器,并且把這些實現(xiàn)封裝成一個系統(tǒng)文件,包含在相應(yīng)的開發(fā)環(huán)境中。這樣 文件夾下是由匯編編寫的 型號,在使用時要注意。見圖4-3cl:互聯(lián)型產(chǎn)品,stm32f105/107系列vl:超值型產(chǎn)品,stm32f100系列xl:超低密度產(chǎn)品,F(xiàn)LASH小于64Kmd:中等密度產(chǎn)品,F(xiàn)LASH=64or128野火M3開發(fā)板中用的 是STM32F103VET6,64KRAM,編寫的c語言代碼運行之前,需要由匯編為c語言的運行建立一個合適的環(huán)境,接下來才能運行的程序。所以也要把啟動文件添加進的的工設(shè)置堆、棧的大小設(shè)置異常向量表 地址SRAM作為數(shù)據(jù)器(這個由用戶配置,一般的開發(fā)板可沒有外部SRAM); 3.5版的啟動文件還調(diào)用了在system_stm32f10x.c文件中的SystemIni()函數(shù)配置系統(tǒng)時鐘,在舊版本的工程中要用戶進入main函數(shù)自己調(diào)用SystemIni函數(shù)。STM32F10x_StdPeriph_Driver文件Libraries\STM32F10x_StdPeriph_Driver文件夾下有inc(include的縮寫)跟src(source的簡寫)這兩個文件夾,這都屬于CMSIS的設(shè)備外設(shè)函數(shù)部分。src里面是每個設(shè)備外設(shè)的驅(qū)動程序,這些外設(shè)是 Cortex-M3核外加進去的。進入libraries 下的STM32F10x_StdPeriph_Driver文件夾,見圖4-4。Include的

更新明明數(shù)文件,每個外設(shè)對應(yīng)一個.c和.h后綴的文件。 為:stm32f10x_ppp.c或stm32f10x_ppp.h文件,PPP表示外設(shè)名稱。如針對模數(shù)轉(zhuǎn)換(ADC)外設(shè),在src文件夾下有一個stm32f10x_adc.c源文件,在inc文件夾下有一個stm32f10x_adc.h頭文件,若 程中用到了STM32 的ADC,則至少要把這兩個文件包含到工程里。4-5incincsrcmisc.c文件,這個文件提供了外設(shè)對NVIC(中斷向量控制器)的函數(shù),在配置中斷時,須把這個、在庫的\Project\STM32F10x_StdPeriph_Template下,存放了的一個庫工程模板,在用庫建立一個完整的工程時,還需要添加這個stm32f10x_it.c、stm32f10x_it.h、stm32f10x_conf.h這三stm32f10x_it.c,是專門用來編寫中斷服務(wù)函數(shù)的,在修改前,這個文件已經(jīng)定義了一些的接口,其它普通中斷服務(wù)函數(shù)由自己添/*ment/*mentthelinebelowtoenable/disableperipheralrfileinclusion//#include//#include//#include//#include//#include//#include//#include//#include//#include//#include//#include#include"stm32f10x//#include//#include//#include#include"stm32f10x//#include//#include#include"stm32f10x//#include#include//#include//#include"misc.h"/*HighlevelfunctionsforNVICandSysTick(add-ontoCMSISfunctions)*/stm32f10x_conf.h,這個文件被包含進stm32f10x.h文件。是用來配 spi、usart的外設(shè)庫函數(shù),其它的注釋掉的部分,表示沒有用到。stm32f10x_conf.h這個文件還可配置是否使用“斷言”編譯選項,在開發(fā)時使用斷言可由編譯器檢查庫函數(shù)傳入的參數(shù)是否正確,編寫成功后,去掉“斷言”編譯選項可使程序全速運行??赏ㄟ^定義USE_FULL_ASSERT庫各文件間的關(guān) NVICNVIC 用戶需要配置的文設(shè)備外設(shè)函數(shù)文件(STM32外設(shè)驅(qū)動函數(shù)) 用 用什層 層 核外設(shè)寄存器定義&心定義定義寄存器地址、寄存器數(shù)據(jù)結(jié)構(gòu)、中斷向量6STM32DSP6STM32DSP(Cortex-M3沒有DSP核 圖0-6(STM32庫文件結(jié)構(gòu) 野火堅信,授之以魚不如授之以漁。資料是所有關(guān)于STM32知識的源頭,所以在本小節(jié)介紹如何使用資料。的幫助手冊,是最好的,常 資《 這個就是前面提到的庫的幫助文檔,在使用庫函數(shù)時,最好通過查閱此文件來了解庫函數(shù)原型,或庫函數(shù)的的方法。也可《STM32參考手冊.pdfSTM32datasheetSTM32 對STM32的庫函數(shù)的實現(xiàn)方式感到困惑時,可查閱這個文件,以直接配置 譯M3內(nèi)核,這是首選,經(jīng)典中的經(jīng)典呀。當(dāng)然還有其他很有用 文檔,這里就不再贅述4.4.2.2初識庫函所謂庫函數(shù),就是STM32的庫文件中為 用這些庫函數(shù),就可以對 函數(shù)是如何實現(xiàn)的,但 調(diào)用函數(shù)必須要知道

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論