《Cortex-M3開發(fā)技術(shù)及實踐》課件第3章 GPIO和AFIO_第1頁
《Cortex-M3開發(fā)技術(shù)及實踐》課件第3章 GPIO和AFIO_第2頁
《Cortex-M3開發(fā)技術(shù)及實踐》課件第3章 GPIO和AFIO_第3頁
《Cortex-M3開發(fā)技術(shù)及實踐》課件第3章 GPIO和AFIO_第4頁
《Cortex-M3開發(fā)技術(shù)及實踐》課件第3章 GPIO和AFIO_第5頁
已閱讀5頁,還剩18頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章GPIO和AFIO-2-本章目標(biāo)理解GPIO的不同功能模式掌握GPIO配置方法掌握GPIO庫函數(shù)使用理解復(fù)用功能AFIO掌握復(fù)用功能IO重映射掌握AFIO庫函數(shù)的使用-3-通用IO和復(fù)用功能

GPIO(GeneralPurposeInputOutput,通用輸入輸出接口)是MCU與外部電路和設(shè)備連接的基本外設(shè)。也就是常說的端口或管腳。AFIO(AlternateFuctionIO,復(fù)用功能IO)是指某些GPIO除了通用功能外還可以設(shè)置為一些外設(shè)專用的功能STM32F107有80個GPIO端口,其中的一些還可以把復(fù)用功能重新映射到其他引腳,以實現(xiàn)優(yōu)化管腳數(shù)目和配置目的。GPIO、AFIO和重映射,分別是一個端口的三個層次。-4-通用IO和復(fù)用功能--GPIO概述

STM32F107有GPIOA、GPIOB、GPIOC、GPIOD和GPIOE五個16位通用接口,每個GPIO端口有16個口線對應(yīng)16個管腳。GPIO端口的每個位可以根據(jù)不同的功能,由軟件分別配置成八種模式:輸入浮空:用于不確定高低電平的輸入。輸入上拉:用于默認(rèn)為上拉至高電平的輸入。輸入下拉:用于默認(rèn)為下拉至低電平的輸入。模擬輸入:用于模擬量的輸入。開漏輸出:用于實現(xiàn)電平轉(zhuǎn)換和線與功能的輸出。推挽式輸出:用于較大功率驅(qū)動的輸出。推挽式復(fù)用功能:復(fù)用功能情況下的推挽輸出。開漏復(fù)用功能:復(fù)用功能情況下的開漏輸出。-5-通用IO和復(fù)用功能--GPIO概述

-6-通用IO和復(fù)用功能--GPIO概述

STM32F107的GPIO的特點如下:復(fù)位期間和剛復(fù)位后,復(fù)用功能未開啟,I/O端口被配置成浮空輸入模式。所有GPIO引腳有一個內(nèi)部弱上拉和弱下拉,當(dāng)配置為輸入時,它們可以被激活也可以被斷開??梢砸酝仆炷J交蜷_漏模式使用輸出驅(qū)動器。當(dāng)作為輸出配置時,寫到輸出數(shù)據(jù)寄存器上的值(GPIOx_ODR)輸出到相應(yīng)的I/O引腳。輸入數(shù)據(jù)寄存器(GPIOx_IDR)在每個APB2時鐘周期捕捉I/O引腳上的數(shù)據(jù)。每個GPIO都可以作為外部中斷/喚醒線。-7-通用IO和復(fù)用功能--輸入功能

GPIO作為輸入時的結(jié)構(gòu)框圖

當(dāng)I/O端口配置為輸入時:輸出緩沖器被禁止。施密特觸發(fā)輸入被激活。根據(jù)輸入配置(上拉,下拉或浮動)的不同,弱上拉和下拉電阻被連接。出現(xiàn)在I/O腳上的數(shù)據(jù)在每個APB2時鐘被采樣到輸入數(shù)據(jù)寄存器。對輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)。-8-通用IO和復(fù)用功能--輸出功能

GPIO作為輸出時的結(jié)構(gòu)框圖

當(dāng)I/O端口被配置為輸出時:開漏模式:輸出寄存器上的“0”激活N-MOS,而輸出寄存器上的“1”將端口置于高阻狀態(tài)推挽模式:輸出寄存器上的“0”激活N-MOS,而輸出寄存器上的“1”將激活P-MOS。施密特觸發(fā)輸入被激活。弱上拉和下拉電阻被禁止。出現(xiàn)在I/O腳上的數(shù)據(jù)在每個APB2時鐘被采樣到輸入數(shù)據(jù)寄存器。在開漏模式時:對輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)。推挽式模式時:對輸出數(shù)據(jù)寄存器的讀訪問得到最后一次寫的值。-9-通用IO和復(fù)用功能--復(fù)用功能

GPIO作為復(fù)用功能時的結(jié)構(gòu)框圖

當(dāng)I/O端口被配置為復(fù)用功能時:在開漏或推挽式配置中,輸出緩沖器被打開。內(nèi)置外設(shè)的信號驅(qū)動輸出緩沖器(復(fù)用功能輸出)。施密特觸發(fā)輸入被激活。弱上拉和下拉電阻被禁止。在每個APB2時鐘周期,出現(xiàn)在I/O腳上的數(shù)據(jù)被采樣到輸入數(shù)據(jù)寄存器。開漏模式時:讀輸入數(shù)據(jù)寄存器時可得到I/O口狀態(tài)。在推挽模式時:讀輸出數(shù)據(jù)寄存器時可得到最后一次寫的值。

-10-通用IO和復(fù)用功能--模擬輸入功能

GPIO作為模擬輸入時的結(jié)構(gòu)框圖

當(dāng)I/O端口被配置為模擬輸入配置時:輸出緩沖器被禁止。禁止施密特觸發(fā)輸入,實現(xiàn)了每個模擬I/O引腳上的零消耗。施密特觸發(fā)輸出值被強(qiáng)置為“0”。弱上拉和下拉電阻被禁止。讀取輸入數(shù)據(jù)寄存器時數(shù)值為“0”。-11-復(fù)用功能IO重映射為了優(yōu)化64腳或100腳封裝的外設(shè)數(shù)目,可以把一些“復(fù)用功能”重新映射到“指定的引腳”上。這時,原來的引腳將不再具有該功能。例如,PB12和PB13在未開啟復(fù)用功能時,是兩個通用功能的IO管腳,一旦開啟復(fù)用功能CAN2,則PB12作為CAN2的RX管腳,PB13作為CAN2的TX管腳。如果將外設(shè)CAN2進(jìn)行了重映射,CAN2的RX功能轉(zhuǎn)移到了PB5,CAN2的TX功能轉(zhuǎn)移到了PB6而PB12和PB13又變回了通用的GPIO,不再具有CAN2的功能。-12-復(fù)用功能IO重映射重映射功能只需要調(diào)用庫函數(shù)GPIO_PinRemapConfig()開啟和關(guān)閉即可,例如要使能CAN2的復(fù)用功能映射,可以使用如下語句:【示例3-1】使能CAN2復(fù)用功能/*執(zhí)行該函數(shù)后,CAN2的RX功能轉(zhuǎn)移到了PB5,CAN2的TX功能轉(zhuǎn)移到了PB6,而PB12和PB13又變回了通用的GPIO,不再具有CAN2的功能。*/GPIO_PinRemapConfig(GPIO_Remap_CAN2,ENABLE);

-13-復(fù)用功能IO重映射GPIO_Remap描述GPIO_Remap_SPI1SPI1復(fù)用功能映射GPIO_Remap_I2C1I2C1復(fù)用功能映射GPIO_Remap_USART1USART1復(fù)用功能映射GPIO_Remap_USART2USART2復(fù)用功能映射GPIO_PartialRemap_USART3USART3復(fù)用功能完全映射GPIO_FullRemap_USART3USART3復(fù)用功能部分映射GPIO_PartialRemap_TIM1TIM1復(fù)用功能部分映射GPIO_FullRemap_TIM1TIM1復(fù)用功能完全映射GPIO_PartialRemap1_TIM2TIM2復(fù)用功能部分映射1GPIO_PartialRemap2_TIM2TIM2復(fù)用功能部分映射2GPIO_FullRemap_TIM2TIM2復(fù)用功能完全映射GPIO_PartialRemap_TIM3TIM3復(fù)用功能部分映射GPIO_FullRemap_TIM3TIM3復(fù)用功能完全映射GPIO_Remap_TIM4TIM4復(fù)用功能映射GPIO_Remap1_CANCAN復(fù)用功能映射1GPIO_Remap2_CANCAN復(fù)用功能映射2GPIO_Remap_PD01PD01復(fù)用功能映射GPIO_Remap_SWJ_NoJTRST除JTRST外SWJ完全使能(JTAG+SW-DP)GPIO_Remap_SWJ_JTAGDisableJTAG-DP失能+SW-DP使能GPIO_Remap_SWJ_DisableSWJ完全失能(JTAG+SW-DP)-14-GPIO編程實例

--GPIO配置下述函數(shù)代碼用于實現(xiàn)任務(wù)描述3.D.1,配置PC6管腳為推挽輸出,并將配置代碼封裝為配置函數(shù)GPIO_Config()。

【描述3.D.1】GPIO_Config()voidGPIO_Config(void){ /*定義一個GPIO_InitTypeDef類型的結(jié)構(gòu)體,該結(jié)構(gòu)體原型在stm32f10x_gpio.h中*/ GPIO_InitTypeDefGPIO_InitStructure; /*使能GPIOC口時鐘,相當(dāng)于給GPIOC供電。使能時鐘是所有外設(shè)工作前的第一步*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); /*選擇管腳6*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; /*選擇管腳速度為50MHz*/

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

/*選擇PC6為推挽輸出模式*/ GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; /*按照結(jié)構(gòu)體GPIO_InitStructure的配置進(jìn)行初始化*/ /*選擇端口為GPIOC*/

GPIO_Init(GPIOC,&GPIO_InitStructure);}-15-GPIO編程實例

--GPIO配置GPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct);GPIO的配置,可以調(diào)用固件庫的GPIO_Init()函數(shù)。GPIO_Init()函數(shù)的原型如下:參數(shù)GPIOxGPIOx描述GPIOA選擇設(shè)置端口為GPIOAGPIOB選擇設(shè)置端口為GPIOBGPIOC選擇設(shè)置端口為GPIOCGPIOD選擇設(shè)置端口為GPIODGPIOE選擇設(shè)置端口為GPIOE-16-GPIO編程實例

--GPIO配置參數(shù)GPIO_InitStruct

GPIO_InitStruct為GPIO_InitTypeDef類型的指針,其結(jié)構(gòu)原型為:【結(jié)構(gòu)體3-1】GPIO_InitTypeDeftypedefstruct{/*需配置的GPIO管腳,可通過“或”操作同時配置多個管腳*/uint16_tGPIO_Pin;

/*PIO速度*/GPIOSpeed_TypeDefGPIO_Speed;

/*GPIO工作模式*/GPIOMode_TypeDefGPIO_Mode;}GPIO_InitTypeDef;-17-GPIO編程實例

--GPIO配置GPIO_Pin成員

GPIO_Pin描述GPIO_Pin_0選擇設(shè)置端口的0管腳GPIO_Pin_1選擇設(shè)置端口的1管腳GPIO_Pin_2選擇設(shè)置端口的2管腳GPIO_Pin_3選擇設(shè)置端口的3管腳GPIO_Pin_4選擇設(shè)置端口的4管腳GPIO_Pin_5選擇設(shè)置端口的5管腳GPIO_Pin_6選擇設(shè)置端口的6管腳GPIO_Pin_7選擇設(shè)置端口的7管腳GPIO_Pin_8選擇設(shè)置端口的8管腳GPIO_Pin_9選擇設(shè)置端口的9管腳GPIO_Pin_10選擇設(shè)置端口的10管腳GPIO_Pin_11選擇設(shè)置端口的11管腳GPIO_Pin_12選擇設(shè)置端口的12管腳GPIO_Pin_13選擇設(shè)置端口的13管腳GPIO_Pin_14選擇設(shè)置端口的14管腳GPIO_Pin_15選擇設(shè)置端口的15管腳GPIO_Pin_ALL選擇設(shè)置端口的所有管腳-18-GPIO編程實例

--GPIO配置GPIO_Speed成員

GPIO_Speed描述GPIO_Speed_2MHz設(shè)置管腳速度為2MHzGPIO_Speed_10MHz設(shè)置管腳速度為10MHzGPIO_Speed_50MHz設(shè)置管腳速度為50MHz-19-GPIO編程實例

--GPIO配置GPIO_Mode成員

GPIO_Mode描述GPIO_Mode_AIN設(shè)置管腳工作模式為模擬輸入GPIO_Mode_IN_FLOATING設(shè)置管腳工作模式為浮空輸入GPIO_Mode_IPD設(shè)置管腳工作模式為輸入下拉GPIO_Mode_IPU設(shè)置管腳工作模式為輸入上拉GPIO_Mode_Out_OD設(shè)置管腳工作模式為開漏輸出GPIO_Mode_Out_PP設(shè)置管腳工作模式為推挽輸出GPIO_Mode_AF_OD設(shè)置管腳工作模式為復(fù)用的開漏GPIO_Mode_AF_PP設(shè)置管腳工作模式為復(fù)用的推挽-20-GPIO編程實例

--GPIO實例下述程序代碼用于實現(xiàn)任務(wù)描述3.D.2,實現(xiàn)PC6管腳輸出狀態(tài)翻轉(zhuǎn)。#include "stm32f10x.h“voidGPIO_Config(void);intmain(void){ inti;

/*配置PC6管腳為推挽輸出,源碼參見描

溫馨提示

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

評論

0/150

提交評論