ARM Cortex-M3嵌入式開發(fā)及應(yīng)用教與學(xué) 課件 第3、4章 STM32F103學(xué)習(xí)平臺(tái);LED燈控制與KEIL MDK工程框架_第1頁
ARM Cortex-M3嵌入式開發(fā)及應(yīng)用教與學(xué) 課件 第3、4章 STM32F103學(xué)習(xí)平臺(tái);LED燈控制與KEIL MDK工程框架_第2頁
ARM Cortex-M3嵌入式開發(fā)及應(yīng)用教與學(xué) 課件 第3、4章 STM32F103學(xué)習(xí)平臺(tái);LED燈控制與KEIL MDK工程框架_第3頁
ARM Cortex-M3嵌入式開發(fā)及應(yīng)用教與學(xué) 課件 第3、4章 STM32F103學(xué)習(xí)平臺(tái);LED燈控制與KEIL MDK工程框架_第4頁
ARM Cortex-M3嵌入式開發(fā)及應(yīng)用教與學(xué) 課件 第3、4章 STM32F103學(xué)習(xí)平臺(tái);LED燈控制與KEIL MDK工程框架_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

ARMCortex-M3嵌入式控制技術(shù)

——基于STM32F103RCT6

STM32F103硬件系統(tǒng)與KEILMDK工程第三章

STM32F103學(xué)習(xí)平臺(tái)1STM32F103核心電路2電源電路與按鍵電路3

LED與蜂鳴器驅(qū)動(dòng)電路4串口通信電路5FLASH與EEPROM電路6溫濕度傳感器電路7LCD屏接口電路8JTAG與復(fù)位電路9聲碼器電路3.1STM32F103核心電路本書使用的計(jì)算機(jī)配置為IntelCoreI9-13900K處理器、32GB內(nèi)存、1TB硬盤、32寸液晶顯示屏和Windows11操作系統(tǒng),現(xiàn)有流行的計(jì)算機(jī)配置均可實(shí)現(xiàn)本書的學(xué)習(xí)與實(shí)驗(yàn)工作。STM32F103學(xué)習(xí)實(shí)驗(yàn)平臺(tái):STM32F103RCT6學(xué)習(xí)實(shí)驗(yàn)板實(shí)現(xiàn)了以下功能:5集成電源指示LED燈;具有復(fù)位按鍵;具有1個(gè)串口,可與計(jì)算機(jī)串口相連;支持SWD串行仿真調(diào)試;具有2個(gè)GPIO口直接相連的用戶按鍵輸入;具有3個(gè)GPIO口驅(qū)動(dòng)的LED燈和1個(gè)蜂鳴器;具有ZLG7289B芯片驅(qū)動(dòng)的8個(gè)LED燈、16個(gè)按鍵和1個(gè)四合一七段數(shù)碼管(帶時(shí)間顯示);具有1個(gè)DS18B20溫度傳感器;具有1個(gè)240×320點(diǎn)陣彩色TFT型LCD屏,帶有電阻式觸摸屏;支持1個(gè)ADC輸入口;具有1個(gè)128KB的EEPROM存儲(chǔ)器AT24C128;具有1個(gè)64Mb的Flash存儲(chǔ)器W25Q64;具有SYN6288聲碼器;+5V單電源供電。STM32F103RCT6核心電路63.2電源電路與按鍵電路3.3LED與蜂鳴器驅(qū)動(dòng)電路JTAG電路和復(fù)位電路可視為STM32F103RCT6微控制器的最小系統(tǒng),即STM32F103RCT6微控制器的最小系統(tǒng)應(yīng)包括電源電路、用戶按鍵電路、LED燈指示電路、復(fù)位電路(可內(nèi)部復(fù)位)、晶體振蕩器電路(可省略)和相應(yīng)的STM32F103RCT6芯片核心電路。3.4串口通信TM32F103RCT6芯片的PA2和PA3通過網(wǎng)標(biāo)TXD232和RXD232與芯片ST3232的T2IN和R2OUT相連接。ST3232電平轉(zhuǎn)換芯片支持2路串口,圖中僅使用了一路,J1為DB9接頭,通過串口線與計(jì)算機(jī)的串口相連實(shí)現(xiàn)異步串行通信。3.5FLASH與EEPROM電路EEPROM芯片AT24C128電路FLASH芯片W25Q64電路3.6溫度傳感器電路溫度傳感器DS18B20接口電路3.7復(fù)位電路、JTAG和ADC電路SWD串行調(diào)試只需要占用數(shù)據(jù)和時(shí)鐘兩個(gè)端口JTAG接口J5通過網(wǎng)標(biāo)SWDIO和SWCLK與STM32F103RCT6芯片的SWDIO(PA13)和SWCLK(PA14)管腳相連接。3.8ZLG7289B電路TM32F103RCT6學(xué)習(xí)板上集成了一片ZLG7289B芯片,通過ZLG7289B可以驅(qū)動(dòng)多個(gè)用戶按鍵和LED燈。一片ZLG7289B最多可同時(shí)驅(qū)動(dòng)64個(gè)按鍵和64個(gè)LED燈,在STM32F103RCT6學(xué)習(xí)板上,使用ZLG7289B驅(qū)動(dòng)了16個(gè)按鍵、8個(gè)LED燈和1個(gè)四合一七段數(shù)碼管。ZLG7289B電路-I3.8ZLG7289B電路ZLG7289B電路-IIZLG7289B電路-III3.8ZLG7289B電路ZLG7289B電路-IVZLG7289B電路-VZLG7289B模塊與STM32F103RCT6間有5個(gè)連接,即圖3-2中的網(wǎng)標(biāo)7289INT、7289CLK、7289CS、7289DIO和USER_D3D4,占用了STM32F103RCT6的5個(gè)GPIO口,這里依次使用了PA12、PA11、PA8、PA13和PB103.9LCD屏接口電路STM32F103RCT6學(xué)習(xí)板上集成了一塊240×320像素分辨率TFT型LCD屏和一塊電阻式觸摸屏,其與STM32F103RCT6的電路連接如圖所示。3.10聲碼器電路STM32F103RCT6學(xué)習(xí)板集成了一塊SYN6288聲碼器,通過串口向其發(fā)送文本信息,聲碼器實(shí)現(xiàn)TTS(TexttoSpeech:文本轉(zhuǎn)化為語音)變換,其電路原理如圖所示。3.11參考電路板使用AltiumDesigner繪制了PCB圖,并制作了STM32F103RCT6學(xué)習(xí)板,選取了一塊沒有焊裝器件的電路板在繪圖所示電路板時(shí),請(qǐng)注意:19電源線、地線的寬度應(yīng)在20mil以上;信號(hào)線寬度在6mil以上,且長(zhǎng)度不應(yīng)超過7cm;過孔的外徑應(yīng)大于24mil,內(nèi)徑應(yīng)大于12mil,內(nèi)外徑差值不少于12mil;接插件應(yīng)根據(jù)實(shí)際器件的針腳粗細(xì)設(shè)計(jì)內(nèi)徑,一般接插件的內(nèi)徑應(yīng)為0.9mm;在PCB布局、布線完成后,應(yīng)覆銅,且應(yīng)使模擬地和數(shù)字地的銅皮在一點(diǎn)相連接;電阻和電容建議選用0805貼片封裝(除少數(shù)電解電容外);電路板上的標(biāo)號(hào)應(yīng)按從左向右或從下向上的方向擺放。thankyou第四章

LED燈控制與KEILMDK工程框架目錄STM32F103通用目的輸入輸出口STM32F103庫函數(shù)用法KeilMDK工程框架LED燈閃爍實(shí)例本章小結(jié)本章將介紹STM32F103RCT6微控制器的通用目的輸入/輸出口(GPIO)及其相關(guān)的寄存器,闡述STM32F103庫函數(shù)訪問GPIO口的方法,講述KeilMDK集成開發(fā)環(huán)境的應(yīng)用技巧和工程框架設(shè)計(jì),最后借助LED燈的閃爍實(shí)例詳細(xì)說明GPIO口的具體操作方法。而庫函數(shù)類型程序設(shè)計(jì)方法本質(zhì)上也是采用了寄存器類型程序設(shè)計(jì)方法,但是STM32芯片開發(fā)商(意法半導(dǎo)體)設(shè)計(jì)了訪問各種寄存器的庫函數(shù),使得應(yīng)用STM32F103RCT6微控制器的程序開發(fā)人員通過調(diào)用庫函數(shù)實(shí)現(xiàn)相應(yīng)的外設(shè)控制功能,而無需關(guān)心片上外設(shè)相關(guān)的寄存器及其地址。2STM32F103RCT6微控制器有兩種程序設(shè)計(jì)方法,即寄存器類型程序設(shè)計(jì)方法和庫函數(shù)類型程序設(shè)計(jì)方法。寄存器類型程序設(shè)計(jì)方法類似于傳統(tǒng)的單片機(jī)程序設(shè)計(jì)方法,借助于芯片的寄存器地址訪問寄存器,通過訪問寄存器實(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è)“開關(guān)”和“輸出控制”可知,GPIO端口具有以下工作模式:(1)輸入懸空(開關(guān)1和開關(guān)2均打開);(2)輸入上拉有效(開關(guān)1閉合、開關(guān)2打開);(3)輸入上拉和下拉均有效模式(開關(guān)1和開關(guān)2均閉合);(4)模擬輸入(開關(guān)1和開關(guān)2均打開、開關(guān)3關(guān)閉);(5)輸出開漏方式(當(dāng)輸出高電平時(shí),“輸出控制”關(guān)閉P-MOS管和N-MOS管;當(dāng)輸出低電平時(shí),“輸入控制”關(guān)閉P-MOS管并打開N-MOS管);STM32F103通用目的輸入輸出口6(6)輸出推挽方式(當(dāng)輸出高電平時(shí),“輸出控制”打開P-MOS管并關(guān)閉N-MOS管;當(dāng)輸出低電平時(shí),“輸出控制”關(guān)閉P-MOS管并打開N-MOS管);(7)替換功能輸入(開關(guān)1、開關(guān)2和開關(guān)3均關(guān)閉);(8)替換功能推挽輸出(當(dāng)輸出高電平時(shí),“輸出控制”打開P-MOS管并關(guān)閉N-MOS管;當(dāng)輸出低電平時(shí),“輸出控制”關(guān)閉P-MOS管并打開N-MOS管)。(9)替換功能開漏輸出(當(dāng)輸出高電平時(shí),“輸出控制”關(guān)閉P-MOS管和N-MOS管;當(dāng)輸出低電平時(shí),“輸出控制”關(guān)閉P-MOS管并打開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庫函數(shù)用法1516了解了STM32F103RCT6的GPIO寄存器,就可以操作GPIO口了。例如,令PB5(即GPIOB的第5腳)輸出高電平,可以使用語句“GPIOB->ODR|=(1uL<<5);”或“GPIOB->BSRR=(1uL<<5);”實(shí)現(xiàn)。這里的GPIOB是定義在文件stm32f10x.h中的結(jié)構(gòu)體指針,如右面的程序段所示。STM32F103庫函數(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庫函數(shù)用法18除了寄存器類型程序外,STM32F103還支持一種抽象的程序類型,稱為借助庫函數(shù)的工程程序,簡(jiǎn)稱庫函數(shù)類型程序。庫函數(shù)相關(guān)的文件如下表所示。STM32F103庫函數(shù)用法19庫函數(shù)全部的文件都是開源的C語言代碼,常量定義和函數(shù)聲明位于.h文件中,函數(shù)體位于.c文件中。例如,在stm32f10x_gpio.h中有以下宏定義語句和函數(shù)聲明:STM32F103庫函數(shù)用法而在相應(yīng)的stm32f10x_gpio.c文件中有以下函數(shù):4.3KeilMDK工程框架2021本書使用了KeilMDKv5.39集成開發(fā)環(huán)境(官網(wǎng)),是截止本書收官時(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í)例“工程管理器”中的分組名與子文件夾的名稱是相同的,但是二者沒有聯(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)入無限循環(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)

溫馨提示

  • 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)論