




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章
LED燈控制與KEILMDK工程框架目錄STM32F103通用目的輸入輸出口STM32F103庫(kù)函數(shù)用法KeilMDK工程框架LED燈閃爍實(shí)例本章小結(jié)本章將介紹STM32F103RCT6微控制器的通用目的輸入/輸出口(GPIO)及其相關(guān)的寄存器,闡述STM32F103庫(kù)函數(shù)訪問(wèn)GPIO口的方法,講述KeilMDK集成開(kāi)發(fā)環(huán)境的應(yīng)用技巧和工程框架設(shè)計(jì),最后借助LED燈的閃爍實(shí)例詳細(xì)說(shuō)明GPIO口的具體操作方法。而庫(kù)函數(shù)類型程序設(shè)計(jì)方法本質(zhì)上也是采用了寄存器類型程序設(shè)計(jì)方法,但是STM32芯片開(kāi)發(fā)商(意法半導(dǎo)體)設(shè)計(jì)了訪問(wèn)各種寄存器的庫(kù)函數(shù),使得應(yīng)用STM32F103RCT6微控制器的程序開(kāi)發(fā)人員通過(guò)調(diào)用庫(kù)函數(shù)實(shí)現(xiàn)相應(yīng)的外設(shè)控制功能,而無(wú)需關(guān)心片上外設(shè)相關(guān)的寄存器及其地址。2STM32F103RCT6微控制器有兩種程序設(shè)計(jì)方法,即寄存器類型程序設(shè)計(jì)方法和庫(kù)函數(shù)類型程序設(shè)計(jì)方法。寄存器類型程序設(shè)計(jì)方法類似于傳統(tǒng)的單片機(jī)程序設(shè)計(jì)方法,借助于芯片的寄存器地址訪問(wèn)寄存器,通過(guò)訪問(wèn)寄存器實(shí)現(xiàn)相應(yīng)的控制功能。4.1STM32F103通用目的輸入輸出口34STM32F103RCT6微控制器具有3個(gè)16位的GPIO口,記為Px(x=A,B,C),以及1個(gè)3位的GPIO口,記為PD,共占用了51個(gè)引腳,每根GPIO端口引腳的內(nèi)部結(jié)構(gòu)如下圖所示。STM32F103通用目的輸入輸出口5由上圖中的3個(gè)“開(kāi)關(guān)”和“輸出控制”可知,GPIO端口具有以下工作模式:(1)輸入懸空(開(kāi)關(guān)1和開(kāi)關(guān)2均打開(kāi));(2)輸入上拉有效(開(kāi)關(guān)1閉合、開(kāi)關(guān)2打開(kāi));(3)輸入上拉和下拉均有效模式(開(kāi)關(guān)1和開(kāi)關(guān)2均閉合);(4)模擬輸入(開(kāi)關(guān)1和開(kāi)關(guān)2均打開(kāi)、開(kāi)關(guān)3關(guān)閉);(5)輸出開(kāi)漏方式(當(dāng)輸出高電平時(shí),“輸出控制”關(guān)閉P-MOS管和N-MOS管;當(dāng)輸出低電平時(shí),“輸入控制”關(guān)閉P-MOS管并打開(kāi)N-MOS管);STM32F103通用目的輸入輸出口6(6)輸出推挽方式(當(dāng)輸出高電平時(shí),“輸出控制”打開(kāi)P-MOS管并關(guān)閉N-MOS管;當(dāng)輸出低電平時(shí),“輸出控制”關(guān)閉P-MOS管并打開(kāi)N-MOS管);(7)替換功能輸入(開(kāi)關(guān)1、開(kāi)關(guān)2和開(kāi)關(guān)3均關(guān)閉);(8)替換功能推挽輸出(當(dāng)輸出高電平時(shí),“輸出控制”打開(kāi)P-MOS管并關(guān)閉N-MOS管;當(dāng)輸出低電平時(shí),“輸出控制”關(guān)閉P-MOS管并打開(kāi)N-MOS管)。(9)替換功能開(kāi)漏輸出(當(dāng)輸出高電平時(shí),“輸出控制”關(guān)閉P-MOS管和N-MOS管;當(dāng)輸出低電平時(shí),“輸出控制”關(guān)閉P-MOS管并打開(kāi)N-MOS管)STM32F103通用目的輸入輸出口7每個(gè)GPIO口具有7個(gè)寄存器,即2個(gè)32位的配置寄存器(GPIOx_CRL和GPIOx_CRH)、2個(gè)32位的數(shù)據(jù)寄存器(GPIOx_IDR和GPIOx_ODR),1個(gè)32位的置位/清零寄存器(GPIOx_BSRR)、1個(gè)16位的清零寄存器(GPIOx_BRR)和1個(gè)32位的配置鎖定寄存器(GPIOx_LCKR),這里x=A,B,C,D。端口配置寄存器GPIOx_CRL和GPIOx_CRH,分別如下面兩張圖所示:GPIO寄存器832位的端口置位/清零寄存器GPIOx_RSRR(偏移地址0x10,復(fù)位值為0x0),可以單獨(dú)置位或清零某個(gè)GPIO管腳。GPIOx_RSRR高16位的每位記為BRy(y=0,1,...,15),低16位的每位記為BSz(z=0,1,...,15),如下圖所示。GPIO寄存器9配置鎖定寄存器GPIOx_LCKR(偏移地址0x18,復(fù)位值為0x0),用于鎖定配置寄存器GPIOx_CRL和GPIOx_CRH的值,如下圖所示。GPIO寄存器10APB2外設(shè)復(fù)位寄存器RCC_APB2RSTR(復(fù)位值為0x0)和APB2外設(shè)時(shí)鐘有效寄存器RCC_APB2ENR(復(fù)位值為0x0)分別如下面兩張圖所示。GPIO寄存器11AFIO寄存器的基地址為0x40010000,STM32F103RCT6共包括7個(gè)AFIO寄存器(復(fù)位值均為0x0),即事件控制寄存器AFIO_EVCR(偏移地址0x0)、替換功能重映射寄存器AFIO_MAPR(偏移地址0x04)、外部中斷配置寄存器AFIO_EXTICR1(偏移地址0x08)、外部中斷配置寄存器AFIO_EXTICR2(偏移地址0x0C)、外部中斷配置寄存器AFIO_EXTICR3(偏移地址0x10)、外部中斷配置寄存器AFIO_EXTICR4(偏移地址0x14)和替換功能重映射寄存器AFIO_MAPR2(偏移地址0x1C)。下面依次詳細(xì)介紹這些寄存器各位的含義。AFIO寄存器12事件控制寄存器AFIO_EVCR,如下表所示。AFIO寄存器13替換功能重映射寄存器AFIO_MAPR如下表所示。AFIO寄存器14外部中斷配置寄存器AFIO_EXTICR1、AFIO_EXTICR2、AFIO_EXTICR3和AFIO_EXTICR4的含義如下表所示。AFIO寄存器4.2STM32F103庫(kù)函數(shù)用法1516了解了STM32F103RCT6的GPIO寄存器,就可以操作GPIO口了。例如,令PB5(即GPIOB的第5腳)輸出高電平,可以使用語(yǔ)句“GPIOB->ODR|=(1uL<<5);”或“GPIOB->BSRR=(1uL<<5);”實(shí)現(xiàn)。這里的GPIOB是定義在文件stm32f10x.h中的結(jié)構(gòu)體指針,如右面的程序段所示。STM32F103庫(kù)函數(shù)用法17事實(shí)上,文件stm32f10x.h中宏定義了STM32F103RCT6微控制器的各種片內(nèi)外設(shè)的寄存器結(jié)構(gòu)體指針,可以直接使用。文件stm32f10x.h是由KeilMDK自動(dòng)產(chǎn)生的。如果不使用stm32f10x.h文件中的寄存器結(jié)構(gòu)體指針,則需要自行定義各個(gè)寄存器,例如,對(duì)于地址為0x40010C0C的寄存器GPIOB_ODR,如下面的程序段所示。STM32F103庫(kù)函數(shù)用法18除了寄存器類型程序外,STM32F103還支持一種抽象的程序類型,稱為借助庫(kù)函數(shù)的工程程序,簡(jiǎn)稱庫(kù)函數(shù)類型程序。庫(kù)函數(shù)相關(guān)的文件如下表所示。STM32F103庫(kù)函數(shù)用法19庫(kù)函數(shù)全部的文件都是開(kāi)源的C語(yǔ)言代碼,常量定義和函數(shù)聲明位于.h文件中,函數(shù)體位于.c文件中。例如,在stm32f10x_gpio.h中有以下宏定義語(yǔ)句和函數(shù)聲明:STM32F103庫(kù)函數(shù)用法而在相應(yīng)的stm32f10x_gpio.c文件中有以下函數(shù):4.3KeilMDK工程框架2021本書(shū)使用了KeilMDKv5.39集成開(kāi)發(fā)環(huán)境(官網(wǎng)),是截止本書(shū)收官時(shí)的最新版本,本書(shū)中的全部工程都可以使用于KeilMDKv5.39及其后續(xù)版本。KeilMDK工程框架22KeilMDK工程框架23KeilMDK工程框架24KeilMDK工程框架25KeilMDK工程框架4.4LED燈閃爍實(shí)例2627在STM32F103RCT6學(xué)習(xí)板上集成了3個(gè)LED燈,下如圖所示。由圖可知,LED燈D9由PB2控制,LED燈D10由PD2控制,LED燈D11由PB7控制。下面介紹LED燈閃爍控制的工程設(shè)計(jì)實(shí)例。LED燈閃爍實(shí)例28對(duì)于STM32F103RCT6學(xué)習(xí)板而言,將下面的程序段中的函數(shù)替換系統(tǒng)文件system_stm32f10x.c中的同名函數(shù)SetSysClockTo72,將芯片的工作時(shí)鐘調(diào)整到64MHz。LED燈閃爍實(shí)例29LED燈閃爍實(shí)例“工程管理器”中的分組名與子文件夾的名稱是相同的,但是二者沒(méi)有聯(lián)系,分組名可以使用各種符號(hào)和漢字。30下面依次介紹工程PRJ01中的各個(gè)文件。LED燈閃爍實(shí)例31LED燈閃爍實(shí)例32LED燈閃爍實(shí)例33LED燈閃爍實(shí)例由下圖所示,工程PRJ01上電復(fù)位后,首先執(zhí)行位于文件system_stm32f10x.c中的SystemInit函數(shù),用于將STM32F103RCT6的時(shí)鐘由8MHz調(diào)整到64MHz;然后轉(zhuǎn)到main函數(shù)執(zhí)行;進(jìn)入到main函數(shù)后,首先調(diào)用LEDInit函數(shù)初始化LED燈的控制;接著進(jìn)入無(wú)限循環(huán)體,依次循環(huán)執(zhí)行“LED燈D9亮、D10滅、D11亮——延時(shí)約1秒——LED燈D9滅、D10亮、D11滅——延時(shí)約1秒”。其中,各個(gè)LED燈的亮和滅是由main函數(shù)調(diào)用led.c文件中的LED函數(shù)實(shí)現(xiàn)的,延時(shí)函數(shù)Delay位于主文件main.c中,由for循環(huán)實(shí)現(xiàn)。34LED燈閃爍實(shí)例本小節(jié)借助調(diào)用庫(kù)函數(shù)的方式實(shí)現(xiàn)工程PRJ01的功能。在工程“PRJ01”基礎(chǔ)上新建工程“PRJ02”,保存在目錄“D:\STM32F103RCT6PRJ”下,此時(shí)的工程“PRJ02”與工程“PRJ01”完全相同。35LED燈閃爍實(shí)例這里添加了宏定義常量USE_STDPERIPH_DRIVER是因?yàn)樵谖募tm32f10x.h中有以下語(yǔ)句:由于庫(kù)函數(shù)文件是針對(duì)STM23F10x全系列的微控制器,宏定義常量STM32F10X_HD表示僅使得那些與STM32F103RCT6相關(guān)的常量和函數(shù)有效。36LED燈閃爍實(shí)例37LED燈閃爍實(shí)例相對(duì)于工程PRJ01中的文件,工程PRJ02只需要修改led.c文件,如下面的程序段所示:38LED燈閃爍實(shí)例39LED燈閃爍實(shí)例這里的類型GPIO_InitTypeDef定義在庫(kù)函數(shù)頭文件stm32f10x_gpio.h中,如下所示:4.5本章小結(jié)4041本章小結(jié)本章介紹了STM32F103RCT6
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年山東省青島市嶗山區(qū)中考二模地理試題及答案
- 2025年中國(guó)方形鏈條市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)數(shù)控螺紋鋼軋輥月牙槽銑床市場(chǎng)調(diào)查研究報(bào)告
- 新疆哈密石油高中2025屆高三第二次調(diào)查研究考試化學(xué)試題含解析
- 小兒維斯科特-奧爾德里奇綜合征預(yù)防和措施課件
- 肇慶市實(shí)驗(yàn)中學(xué)高中歷史一:第課世界多極化趨勢(shì)教案
- 新疆能源職業(yè)技術(shù)學(xué)院《高級(jí)細(xì)胞生物學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025-2030年中國(guó)PVAC乳液境外融資報(bào)告
- 新疆職業(yè)大學(xué)《Hadoop綜合實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 邢臺(tái)市臨西縣2025屆三下數(shù)學(xué)期末達(dá)標(biāo)檢測(cè)模擬試題含解析
- 2025年操控員資質(zhì)考試題及答案
- T-CAWAORG 014-2024 老年綜合評(píng)估及干預(yù)技術(shù)應(yīng)用規(guī)范
- 圍手術(shù)期下肢靜脈血栓預(yù)防與護(hù)理
- 《大學(xué)生就業(yè)指導(dǎo)》期末筆記
- 《訴衷情》(陸游)課件
- 鋁塑板發(fā)光字招牌施工方案
- 陜西省2024年中考語(yǔ)文現(xiàn)代文閱讀真題
- 江蘇省南京市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版期末考試(下學(xué)期)試卷及答案
- 2024年戰(zhàn)略規(guī)劃咨詢服務(wù)合同
- 2024年度山東省國(guó)家電網(wǎng)招聘之管理類測(cè)試卷(含答案)
- 《大學(xué)心理》筆記(1-14章節(jié))
評(píng)論
0/150
提交評(píng)論