STM32筆記教學(xué)提綱_第1頁
STM32筆記教學(xué)提綱_第2頁
STM32筆記教學(xué)提綱_第3頁
STM32筆記教學(xué)提綱_第4頁
STM32筆記教學(xué)提綱_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Good is good, but better carries it.精益求精,善益求善。STM32筆記-Erasedv.抹去(erase的過去分詞);消除Programmedadj.程序化的,程控的Verifiedadj.已查清的,已證實(shí)的,已驗(yàn)證的stm32f10 x.h類似于51單片機(jī)中的頭文件reg51.h一樣,定義了如P0、P1等特殊寄存器的名稱與實(shí)際物理地址相對(duì)應(yīng)stm32f10 x_conf.h是用戶需要配置的頭文件,當(dāng)我們需要用到某部分外設(shè)驅(qū)動(dòng)時(shí),我們只需要將該部分外設(shè)的頭文件包含進(jìn)來即可。configuredadj.配置;配置的故,添加外設(shè)驅(qū)動(dòng)文件stm32f10 x_xx

2、x.c的時(shí)候,可以把全部驅(qū)動(dòng)文件全部添加進(jìn)來,然后通過stm32f10 x_conf.h文件選擇性的添加;也即,只有在stm32f10 x_conf.h文件中配置的文件才會(huì)被編譯。Stm32f10 x_it.c和Stm32f10 x_it.h這兩個(gè)文件里面是中斷函數(shù),里面內(nèi)容為空,并沒有寫任何中斷服務(wù)程序,需用戶添加;itinterruptvi.打斷;打擾Core_cm3.c和Core_cm3.h是位于Libraries/CMSIS/CM3文件夾下的Coresupport的文件,它們是CMSIS標(biāo)準(zhǔn)的核內(nèi)設(shè)備函數(shù)層的M3核通用的源文件和頭文件,其作用是為那些采用Cortex-M3核設(shè)計(jì)SOC的

3、芯片的外設(shè)提供一個(gè)進(jìn)入M3內(nèi)核的接口,這兩個(gè)文件在其他公司的M3系列芯片也是相同的。什么是JTAG接口JTAG(JointTestActionGroup聯(lián)合測(cè)試行動(dòng)小組)是一種國(guó)際標(biāo)準(zhǔn)測(cè)試協(xié)議,主要用于芯片內(nèi)部測(cè)試及對(duì)系統(tǒng)進(jìn)行仿真、調(diào)試。JTAG技術(shù)是一種嵌入式調(diào)試技術(shù),它在芯片內(nèi)部封裝了專門的測(cè)試電路TAP(TestAccessPort測(cè)試訪問口),通過專用的JTAG測(cè)試工具對(duì)內(nèi)部節(jié)點(diǎn)進(jìn)行測(cè)試。TAP控制器的狀態(tài)機(jī)通過TCK和TMS進(jìn)行狀態(tài)的改變,實(shí)現(xiàn)數(shù)據(jù)和指令的輸入。目前大多數(shù)比較復(fù)雜的器件都支持JTAG協(xié)議,如ARM、DSP、FPGA器件等。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TD

4、I、TDO,分別為測(cè)試模式選擇、測(cè)試時(shí)鐘、測(cè)試數(shù)據(jù)輸入和測(cè)試數(shù)據(jù)輸出。(Testmodeselecet、testclock、testdatainput、testdataoutput)JTAG測(cè)試允許多個(gè)器件通過JTAG接口串聯(lián)在一起,形成一個(gè)JTAG鏈,能實(shí)現(xiàn)對(duì)各個(gè)器件分別測(cè)試。JTAG接口還常用于實(shí)現(xiàn)ISP(In-SystemProgrammable在系統(tǒng)編程)功能,如對(duì)FLASH器件進(jìn)行編程等。通過JTAG接口,可對(duì)芯片內(nèi)部的所有部件進(jìn)行訪問,因而是開發(fā)調(diào)試嵌入式系統(tǒng)的一種簡(jiǎn)潔高效的手段。目前JTAG接口的連接有兩種標(biāo)準(zhǔn),即14針接口和20針接口,其定義分別如下所示。STM32總線AHBA

5、dvancedHightSpeedBuses先進(jìn)高速總線數(shù)據(jù)總線D-bus、系統(tǒng)總線、STM32內(nèi)部的SRAM和DMA單元都掛載在AHB上;AHB總線的工作頻率與Cortex-M3內(nèi)核一致,但AHB總線上掛著許多獨(dú)立的分頻器,可以輸出較低的時(shí)鐘頻率而達(dá)到較低功耗APBAdvancedPeripheralBuses先進(jìn)外部設(shè)備總線每一條APB又都與AHB總線矩陣相連APB1總線只能以最大36MHz頻率運(yùn)行,而APB2總線可以最大72MHz頻率運(yùn)行DMA(DirectMemoryAccess)控制器是一種在系統(tǒng)內(nèi)部轉(zhuǎn)移數(shù)據(jù)的獨(dú)特外設(shè)。可以將其視為一種能夠通過一組專用總線,將內(nèi)部和外部存儲(chǔ)器與每個(gè)具

6、有DMA能力的外設(shè)連接起來的控制器。它之所以屬于外設(shè),是因?yàn)樗窃谔幚砥鞯木幊炭刂葡聛韴?zhí)行傳輸?shù)?。值得注意的是,通常只有?shù)據(jù)流量較大(kBps或者更高)的外設(shè)才需要支持DMA能力,這些應(yīng)用方面典型的例子包括視頻、音頻和網(wǎng)絡(luò)接口。小結(jié):在stm32f10 x_gpio.h中,只有GPIO_InitTypeDef一個(gè)數(shù)據(jù)結(jié)構(gòu),在stm32f10 x_uart.h中有兩個(gè)數(shù)據(jù)結(jié)構(gòu)USART_ClockInitTypeDef和USART_InitTypeDef.相信在其他的stm32f10 x_xxx.h中也是如此,即有針對(duì)性的數(shù)據(jù)結(jié)構(gòu),不會(huì)好多而混亂。也就是說,在不同外設(shè)的頭文件里,都有幾個(gè)針對(duì)該外

7、設(shè)的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu),也就是該外設(shè)驅(qū)動(dòng)函數(shù)的操作對(duì)象(作為一個(gè)輸入?yún)?shù))。我們要做的就是:定義數(shù)據(jù)結(jié)構(gòu),對(duì)數(shù)據(jù)結(jié)構(gòu)成員賦值,調(diào)用驅(qū)動(dòng)函數(shù),當(dāng)然,如果可能有多重配置等,可以定義多個(gè)數(shù)據(jù)結(jié)構(gòu)。庫函數(shù)編程:其實(shí)很簡(jiǎn)單:在stm32f10 x/h中都會(huì)有定義一個(gè)與外設(shè)有關(guān)的控制/狀態(tài)寄存器數(shù)據(jù)結(jié)構(gòu)(typedefinestruct)。在stm32f10 x_xxx.h相應(yīng)外設(shè)驅(qū)動(dòng)頭文件中,都會(huì)有幾個(gè)已賦值的描述外設(shè)狀態(tài)的枚舉結(jié)構(gòu)(typedefineenum)和對(duì)外設(shè)狀態(tài)設(shè)置的數(shù)據(jù)結(jié)構(gòu)(typedefine).。在stm32f10 x_xxx.c中的驅(qū)動(dòng)函數(shù),主要是對(duì)已配置好的控制/狀態(tài)寄存器等

8、進(jìn)行操作,只管調(diào)用就行了。小結(jié):定義一個(gè)外設(shè)狀態(tài)設(shè)置的數(shù)據(jù)結(jié)構(gòu)(typedefine),利用枚舉成員(typedefineenum)對(duì)該數(shù)據(jù)結(jié)構(gòu)賦值,再調(diào)用驅(qū)動(dòng)函數(shù),數(shù)據(jù)結(jié)構(gòu)為輸入?yún)?shù),把參數(shù)賦給驅(qū)動(dòng)函數(shù)內(nèi)部的寄存器數(shù)據(jù)結(jié)構(gòu),從而控制外設(shè)。數(shù)據(jù)結(jié)構(gòu)XXX_IintTypeDef也即XXXInitstructuredefinitionUSART_ClockInitTypeDef在stm32f10 x_usart.h頭文件中定義USART_InitTypeDefUSART_TypeDef包含在stm32f10 x.h內(nèi),定義USART外設(shè)的寄存器結(jié)構(gòu)在stm32f10 x_XXX.h頭文件中定義的

9、數(shù)據(jù)結(jié)構(gòu):XXX_ClockInitTypeDef外設(shè)時(shí)鐘初始化XXX_InitTypeDef外設(shè)初始化XXX_TypeDef包含在stm32f10 x.h內(nèi),定義XXX外設(shè)的寄存器結(jié)構(gòu)例如:GPIO_TypeDef也即GPIO_TypeDefStructReferencetypedefstruct_IOuint32_tCRL;_IOuint32_tCRH;_IOuint32_tIDR;_IOuint32_tODR;_IOuint32_tBSRR;_IOuint32_tBRR;_IOuint32_tLCKR;GPIO_TypeDef;包含在stm32f10 x.h內(nèi)的XXX_TypeDef數(shù)據(jù)

10、結(jié)構(gòu)體,定義了XXX外設(shè)的寄存器結(jié)構(gòu),利用了結(jié)構(gòu)體內(nèi)成員在內(nèi)存中的連續(xù)性,而外設(shè)的控制寄存器也是連續(xù)分布的。而對(duì)應(yīng)stm32f10 x_xxx.c內(nèi)的驅(qū)動(dòng)函數(shù),大都是操作外設(shè)寄存器的,所以XXX_TypeDef都是輸入?yún)?shù),其實(shí)驅(qū)動(dòng)函數(shù)本來就是基于寄存器的操作,而XXX_TypeDef是寄存器的集合體。而包含在stm32f10 x_XXX.h內(nèi)的數(shù)據(jù)結(jié)構(gòu)體,定義了“可選擇的枚舉類型”的數(shù)據(jù),即把外設(shè)配置成什么工作方式。其內(nèi)的結(jié)構(gòu)成員是枚舉類型或宏定義,也即取值范圍固定,用具有特定含義的名字代替數(shù)據(jù):typedefstructuint16_tGPIO_Pin;GPIOSpeed_TypeDefG

11、PIO_Speed;GPIOMode_TypeDefGPIO_Mode;GPIO_InitTypeDef;voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct)GPIO_TypeDef*GPIOx定義GPIOx參數(shù)為GPIO_TypeDef類型的指針;GPIO_InitTypeDef*GPIO_InitStruct定義GPIO_InitStruct參數(shù)為GPIO_InitTypeDef類型的指針一、宏定義-庫函數(shù)版/帶參宏,可以像內(nèi)聯(lián)函數(shù)一樣使用#defineLED1(a)if(a)GPIO_SetBits(GPIOA,GPIO_Pin_2);elseGPIO_ResetBits(GPIOA,GPIO_Pin_2)二、直接操作寄存器GPIOB-ODR=0XFFFE;/低電平,GPIOB0(LED0)燈亮Delay(0 x0FFFFF);GPIOB-ODR=0XFFFF;/高電平,GPIOB0(LED0)燈滅三、宏定義-寄存器版/*直接操作寄存器的方法控制IOBSR輸出寄存器*/#definedigitalHi(p,i)p-BSRR=i;/設(shè)置為高電平#definedigitalLo(p,i)p-BRR=i;/輸出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論