《STM32嵌入式單片機原理與應(yīng)用》 課件 第5章 輸入輸出接口GPIO_第1頁
《STM32嵌入式單片機原理與應(yīng)用》 課件 第5章 輸入輸出接口GPIO_第2頁
《STM32嵌入式單片機原理與應(yīng)用》 課件 第5章 輸入輸出接口GPIO_第3頁
《STM32嵌入式單片機原理與應(yīng)用》 課件 第5章 輸入輸出接口GPIO_第4頁
《STM32嵌入式單片機原理與應(yīng)用》 課件 第5章 輸入輸出接口GPIO_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章通用輸入/輸出

接口GPIO本章講述了通用輸入/輸出接口GPIO,包括通用輸入/輸出接口概述、GPIO的功能、GPIO常用庫函數(shù)、GPIO使用流程、GPIO輸出應(yīng)用實例和GPIO輸入應(yīng)用實例。幾乎在所有的嵌入式系統(tǒng)應(yīng)用中,都涉及開關(guān)量的輸入和輸出功能,例如狀態(tài)指示、報警輸出、繼電器閉合和斷開、按鈕狀態(tài)讀入、開關(guān)量報警信息的輸入等。這些開關(guān)量的輸入和控制輸出都可以通過通用輸入/輸出接口實現(xiàn)。STM32F103VET6有80根多功能雙向能承受5V電壓的快速I/O口線。每16根口線分為一組,分別為PA、PB、PC、PD、PE。每個GPIO端口有兩個32位配置寄存器(GPIOx_CRL,GPIOx_CRH),兩個32位數(shù)據(jù)寄存器(GPIOx_IDR和GPIOx_ODR),一個32位置位/復(fù)位寄存器(GPIOx_BSRR),一個16位復(fù)位寄存器(GPIOx_BRR)和一個32位鎖定寄存器(GPIOx_LCKR)。5.1通用輸入/輸出接口概述GPIO端口的每個位都可以由軟件分別配置成以下模式。1)輸入浮空:浮空(floating)就是邏輯器件的輸入引腳既不接高電平,也不接低電平。由于邏輯器件的內(nèi)部結(jié)構(gòu),當(dāng)它輸入引腳懸空時,相當(dāng)于該引腳接了高電平。一般實際運用時,引腳不建議懸空,易受干擾。2)輸入上拉:上拉就是把電壓拉高,比如拉到Vcc。上拉就是將不確定的信號通過一個電阻嵌位在高電平。電阻同時起限流作用。弱強只是上拉電阻的阻值不同,沒有什么嚴(yán)格區(qū)分。3)輸入下拉:就是把電壓拉低,拉到GND。與上拉原理相似。4)模擬輸入:模擬輸入是指傳統(tǒng)方式的模擬量輸入。數(shù)字輸入是輸入數(shù)字信號,即0和1的二進制數(shù)字信號。5)開漏輸出:輸出端相當(dāng)于三極管的集電極。要得到高電平狀態(tài)需要上拉電阻才行。適合于做電流型的驅(qū)動,其吸收電流的能力相對強(一般20mA以內(nèi))。6)推挽式輸出:可以輸出高低電平,連接數(shù)字器件;推挽結(jié)構(gòu)一般是指兩個三極管分別受兩個互補信號的控制,總是在一個三極管導(dǎo)通的時候另一個截止。7)推挽式復(fù)用功能。8)開漏復(fù)用功能。復(fù)用功能可以理解為GPIO口被用作第二功能時的配置情況(即并非作為通用I/O口使用)。每個I/O可以自由編程,而I/O口寄存器必須按32位字訪問(不允許半字或字節(jié)訪問)。GPIOx_BSRR和GPIOxBRR寄存器允許對任何GPIO寄存器的讀/更改的獨立訪問,這樣,在讀和更改訪問之間產(chǎn)生中斷(IRQ)時不會發(fā)生危險。一個I/O口的基本結(jié)構(gòu)如圖5-1所示。圖5-1一個I/O口位的基本結(jié)構(gòu)I/O口位的基本結(jié)構(gòu)包括以下幾部分。包括輸入數(shù)據(jù)寄存器和輸入驅(qū)動器。在接近I/O引腳處連接了兩只保護二極管,假設(shè)保護二極管的導(dǎo)通電壓降為Vd,則輸入到輸入驅(qū)動器的信號電壓范圍被鉗位在:Vss-Vd<Vin<Vdd+Vd

由于Vd的導(dǎo)通壓降不會超過0.7V,若電源電壓Vdd為3.3V,則輸入到輸入驅(qū)動器的信號最低不會低于-0.7V,最高不會高于4V,起到了保護作用。5.1.1輸入通道輸出通道中包括位設(shè)置/清除寄存器、輸出數(shù)據(jù)寄存器、輸出驅(qū)動器。要輸出的開關(guān)量數(shù)據(jù)首先寫入到位設(shè)置/清除存器,通過讀寫命令進入輸出數(shù)據(jù)寄存器,然后進入輸出驅(qū)動的輸出控制模塊。輸出控制模塊可以接收開關(guān)量的輸出和復(fù)用功能輸出。輸出的信號通過由P-MOS和N-MOS場效應(yīng)管電路輸出到引腳。通過軟件設(shè)置,由P-MOS和N-MOS場效應(yīng)管電路可以構(gòu)成推挽方式、開漏方式或者關(guān)閉。5.1.2輸出通道5.2GPIO的功能復(fù)位期間和剛復(fù)位后,復(fù)用功能未開啟,I/O口被配置成浮空輸入模式。復(fù)位后,JTAG引腳被置于輸入上拉或下拉模式。1)PA13:JTMS置于上拉模式。2)PA14:JTCK置于下拉模式。3)PA15:JTDI置于上拉模式。4)PB4:JNTRST置于上拉模式。當(dāng)作為輸出配置時,寫到輸出數(shù)據(jù)寄存器(GPIOx_ODR)上的值輸出到相應(yīng)的I/O引腳??梢砸酝仆炷J交蜷_漏模式(當(dāng)輸出0時,只有N-MOS被打開)使用輸出驅(qū)動器。5.2.1普通I/O功能輸入數(shù)據(jù)寄存器(GPIOx_IDR)在每個APB2時鐘周期捕捉I/O引腳上的數(shù)據(jù)。所有GPIO引腳有一個內(nèi)部弱上拉和弱下拉,當(dāng)配置為輸入時,它們可以被激活也可以被斷開。5.2.2單獨的位設(shè)置或位清除當(dāng)對GPIOx_ODR的個別位編程時,軟件不需要禁止中斷:在單次APB2寫操作中,可以只更改一個或多個位。這是通過對“置位/復(fù)位寄存器”(GPIOx_BSRR,復(fù)位是GPIOx_BRR)中想要更改的位寫1來實現(xiàn)的。沒被選擇的位將不被更改。所有端口都有外部中斷能力。為了使用外部中斷線,端口必須配置成輸入模式。5.2.3外部中斷/喚醒線5.2.4復(fù)用功能(AF)使用默認(rèn)復(fù)用功能前必須對端口位配置寄存器編程。1)對于復(fù)用輸入功能,端口必須配置成輸入模式(浮空、上拉或下拉)且輸入引腳必須由外部驅(qū)動。2)對于復(fù)用輸出功能,端口必須配置成復(fù)用功能輸出模式(推挽或開漏)。3)對于雙向復(fù)用功能,端口位必須配置復(fù)用功能輸出模式(推挽或開漏)。此時,輸入驅(qū)動器被配置成浮空輸入模式。如果把端口配置成復(fù)用輸出功能,則引腳和輸出寄存器斷開,并和片上外設(shè)的輸出信號連接。如果軟件把一個GPIO腳配置成復(fù)用輸出功能,但是外設(shè)沒有被激活,那么它的輸出將不確定。5.2.5軟件重新映射I/O復(fù)用功能為了使不同封裝器件的外設(shè)I/O功能的數(shù)量達到最優(yōu),可以把一些復(fù)用功能重新映射到其他一些引腳上。這可以通過軟件配置AFIO寄存器來完成,這時,復(fù)用功能就不再映射到它們的原始引腳上了。5.2.6GPIO鎖定機制鎖定機制允許凍結(jié)I/O配置。當(dāng)在一個端口位上執(zhí)行了鎖定(LOCK)程序,在下一次復(fù)位之前,將不能再更改端口位的配置。這個功能主要用于一些關(guān)鍵引腳的配置,防止程序跑飛引起災(zāi)難性后果。5.2.7輸入配置當(dāng)I/O口配置為輸入時:1)輸出緩沖器被禁止。2)施密特觸發(fā)輸入被激活。3)根據(jù)輸入配置(上拉,下拉或浮動)的不同,弱上拉和下拉電阻被連接。4)出現(xiàn)在I/O引腳上的數(shù)據(jù)在每個APB2時鐘被采樣到輸入數(shù)據(jù)寄存器。5)對輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)。I/O口位的輸入配置如圖5-2所示。圖5-2輸入浮空/上拉/下拉配置5.2.8輸出配置當(dāng)I/O口被配置為輸出時:1)輸出緩沖器被激活。①開漏模式:輸出寄存器上的0激活N-MOS,而輸出寄存器上的1將端口置于高阻狀態(tài)(P-MOS從不被激活)。②推挽模式:輸出寄存器上的0激活N-MOS,而輸出寄存器上的1將激活P-MOS。2)施密特觸發(fā)輸入被激活。3)弱上拉和下拉電阻被禁止。4)出現(xiàn)在I/O引腳上的數(shù)據(jù)在每個APB2時鐘被采樣到輸入數(shù)據(jù)寄存器。5)在開漏模式時,對輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)。6)在推挽式模式時,對輸出數(shù)據(jù)寄存器的讀訪問得到最后一次寫的值。I/O口位的輸出配置如圖5-3所示。圖5-3輸出配置5.2.9復(fù)用功能配置當(dāng)I/O口被配置為復(fù)用功能時:1)在開漏或推挽式配置中,輸出緩沖器被打開。2)內(nèi)置外設(shè)的信號驅(qū)動輸出緩沖器(復(fù)用功能輸出)3)施密特觸發(fā)輸入被激活。4)弱上拉和下拉電阻被禁止。5)在每個APB2時鐘周期,出現(xiàn)在I/O引腳上的數(shù)據(jù)被采樣到輸入數(shù)據(jù)寄存器。6)開漏模式時,讀輸入數(shù)據(jù)寄存器時可得到I/O口狀態(tài)7)在推挽模式時,讀輸出數(shù)據(jù)寄存器時可得到最后一次寫的值。一組復(fù)用功能I/O寄存器允許用戶把一些復(fù)用功能重新映像到不同的引腳。I/O口位的復(fù)用功能配置如圖5-4所示。圖5-4復(fù)用功能配置I/O口位的復(fù)用功能配置如圖5-4所示。5.2.10模擬輸入配置當(dāng)I/O口被配置為模擬輸入配置時:1)輸出緩沖器被禁止。2)禁止施密特觸發(fā)輸入,實現(xiàn)了每個模擬I/O引腳上的零消耗。施密特觸發(fā)輸出值被強置為0。3)弱上拉和下拉電阻被禁止。4)讀取輸入數(shù)據(jù)寄存器時數(shù)值為0。I/O口位的高阻抗模擬輸入配置如圖5-5所示。圖5-5高阻抗的模擬輸入配置5.3GPIO常用庫函數(shù)STM32標(biāo)準(zhǔn)庫中提供了幾乎覆蓋所有GPIO操作的函數(shù),如表5-1所示。為了理解這些函數(shù)的具體使用方法,下面對標(biāo)準(zhǔn)庫中的函數(shù)做詳細(xì)介紹。GPIO操作的函數(shù)一共有17個,這些函數(shù)都被定義在stm32f10x_gpio.c中,使用stm32f10x_gpio.h頭文件。表5-1GPIO函數(shù)庫主要功能高級控制定時器GPIO_DeInit將外設(shè)GPIOx寄存器重設(shè)為缺省值GPIO_AFIODeInit將復(fù)用功能(重映射事件控制和EXTI設(shè)置)重設(shè)為缺省值GPIO_Init根據(jù)GPIO_InitStruct中指定的參數(shù)初始化外設(shè)GPIOx寄存器GPIO_StructInit把GPIO_InitStruct中的每一個參數(shù)按缺省值填入GPIO_ReadInputDataBit讀取指定端口引腳的輸入GPIO_ReadInputData讀取指定的GPIO端口輸入GPIO_ReadOutputDataBit讀取指定端口引腳的輸出GPIO_ReadOutputData讀取指定的GPIO端口輸出主要功能高級控制定時器GPIO_SetBits設(shè)置指定的數(shù)據(jù)端口位GPIO_ResetBits清除指定的數(shù)據(jù)端口位GPIO_WriteBit設(shè)置或清除指定的數(shù)據(jù)端口位GPIO_Write向指定GPIO數(shù)據(jù)端口寫入數(shù)據(jù)GPIO_PinLockConfig鎖定GPIO引腳設(shè)置寄存器GPIO_EventOutputConfig選擇GPIO引腳用作事件輸出GPIO_EventOutputCmd使能或者失能事件輸出GPIO_PinRemapConfig改變指定引腳的映射GPIO_EXTILineConfig選擇GPIO引腳用作外部中斷線路表5-1GPIO函數(shù)庫(續(xù)表)1.GPIO_Delnit函數(shù)函數(shù)名:GPIO_DeInit。函數(shù)原型:voidGPIO_DeInit(GPIO_TypeDef*GPIOx)。功能描述:將GPIOx外設(shè)寄存器重設(shè)為它們的默認(rèn)值。輸入?yún)?shù):GPIOx:x可以是(A..G)來選擇GPIO外設(shè)。輸出參數(shù):無。返回值:無。例如:/*重置GPIOA外設(shè)寄存器為默認(rèn)值*/GPIO_DeInit(GPIOA);2.GPIO_AFIODelnit函數(shù)函數(shù)名:GPIO_AFIODeInit。函數(shù)原型:voidGPIO_AFIODeInit(void)。功能描述:將復(fù)用功能(重映射時間控制和EXTI配置)重設(shè)為默認(rèn)值。輸入?yún)?shù):無。輸出參數(shù):無。返回值:無。例如:/*復(fù)用功能寄存器復(fù)位為默認(rèn)值*/GPIO_AFIODeInit();3.GPIO_Init函數(shù)函數(shù)名:GPIO_Init。函數(shù)原型:voidGPIO_Init(GPIO_TypeDef*GPIOx,GPIO_InitTypeDef*GPIO_InitStruct)。功能描述:根據(jù)GPIOInitStruct中指定已賦值初始化外設(shè)GPIOx寄存器。輸入?yún)?shù)1:GPIOx,x可以是(A..G)來選擇外設(shè)。輸入?yún)?shù)2:GPIO_InitStruct,指向結(jié)構(gòu)GPIO_InitTypeDef的指針,包含了外設(shè)GPIO的配置信息。輸出參數(shù):無。返回值:無。例如:/*配置所有的GPIOA引腳為輸入浮動模式*/GPIO_InitTypeDef

GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_ALL;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);其中,GPIO_InitTypeDef是結(jié)構(gòu)體。GPIO_InitTypeDef定義于文件stm32f10x_gpio.h:

typedef

struct{uint16_tGPIO_Pin;GPIOSpeed_TypeDef

GPIO_Speed;GPIOMode_TypeDef

GPIO_Mode;}GPIO_InitTypeDef;GPIO_Pin參數(shù)用于選擇待設(shè)置的GPIO引腳,使用操作符“∣”可以一次選中多個引腳??梢允褂孟旅娴娜我饨M合。GPIO_Pin定義于文件stm32f10x_gpio.h:#defineGPIO_Pin_0((uint16_t)0x0001)/*!<PinOselected*/#defineGPIO_Pin_1((uint16_t)0x0002)/*!<Pin1selected*/#defineGPIO_Pin_2((uint16_t)0x0004)/*!<Pin2selected*/#defineGPIO_Pin_3((uint16_t)0x0008)/*!<Pin3selected*/#defineGPIO_Pin_4((uint16_t)0x0010)/*!<Pin4selected*/#defineGPIO_Pin_5((uint16_t)0x0020)/*!<Pin5selected*/#defineGPIO_Pin_6((uint16_t)0x0040)/*!<Pin6selected*/#defineGPIO_Pin_7((uint16_t)0x0080)/*!<Pin7selected*/#defineGPIO_Pin_8((uint16_t)0x0100)/*!<Pin8selected*/#defineGPIO_Pin_9((uint16_t)0x0200)/*!<Pin9selected*/#defineGPIO_Pin_10((uint16_t)0x0400)/*!<Pin10selected*/#defineGPIO_Pin_11((uint16_t)0x0800)/*!<Pin11selected*/#defineGPIO_Pin_12((uint16_t)0x1000)/*!<Pin12selected*/#defineGPIO_Pin_13((uint16_t)0x2000)/*!<Pin13selected*/#defineGPIO_Pin_14((uint16_t)0x4000)/*!<Pin14selected*/#defineGPIO_Pin_15((uint16_t)0x8000)/*!<Pin15selected*/#defineGPIO_Pin_A11((uint16_t)0xFFEF)/*!<Allpinsselected*/GPIO_Speed用于設(shè)置選中引腳的速率。typedefenum{GPIO_Speed_10MHz=1,/*最高輸出速率10MHz*/GPIO_Speed_2MHz,/*最高輸出速率2MHz*/GPIO_Speed_50MHz/*最高輸出速率50MHz*/}GPIOSpeed_TypeDef;GPIO_Mode用于設(shè)置選中引腳的工作狀態(tài)。typedefenun{GPIO_Mode_AIN=0x0,/*模擬輸入*/GPIO_Mode_IN_FLOATING=0x04,/*浮空輸入*/GPIO_Mode_IPD=0x28,/*下拉輸入*/GPIO_Mode_IPU=0x48,/*上拉輸入*/GPIO_Mode_Out_OD=0x14,/*開漏輸出*/GPIO_Mode_Out_PP=0x10,/*推挽輸出*/GPIO_Mode_AF_OD=0x1C,/*復(fù)用開漏輸出*/GPIO_Mode_AF_PP=0x18/*復(fù)用推挽輸出*/}GPIOMode_TypeDef;4.GPIO_Structlnit函數(shù)函數(shù)名:GPIO_StructInit。函數(shù)原型:voidGPIO_StructInit(GPIO_InitTypeDef*GPIO_InitStruct)。功能描述:把GPIO_InitStruct中成員設(shè)置為它的默認(rèn)值。輸入?yún)?shù):GPIO_InitStruct,一個GPIO_InitTypeDef結(jié)構(gòu)體指針,指向待初始化的GPIO_InitTypeDef結(jié)構(gòu)體。輸出參數(shù):無。返回值:無。例如:/*使GPIO的參數(shù)設(shè)置為初始化參數(shù)初始化結(jié)構(gòu)*/GPIO_InitTypeDefGPIOInitStructure;GPIO_StructInit(&GPIO_InitStructure);其中,GPIO_InitStruct默認(rèn)值為:GPIO_Pin

GPIO_Pin_ALLGPIO_SpeedGPIO_Speed_2MHzGPIO_Mode

GPIO_Mode_IN_FLOATING5.GPIO_ReadinputDataBit

函數(shù)函數(shù)名:GPIO_ReadInputDataBit。函數(shù)原型:u8GPIO_ReadInputDataBit(GPIO_TypeDef*GPIOx,u16GPIO_Pin)。功能描述:讀取指定端口引腳的輸入。輸入?yún)?shù)1:GPIOx,x可以是(A..G),來選擇外設(shè)。輸入?yún)?shù)2:GPIO_Pin,讀取指定的端口位,這個參數(shù)的值是GPIO_Pin_x,其中x是(0..15)。輸出參數(shù):無。返回值:輸入端口引腳值。例如:/*讀出PB5的輸入數(shù)據(jù)并將它存儲在變量ReadValue中*/u8ReadValue;ReadValue=GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5);6.GPIO_ReadlnputData

函數(shù)函數(shù)名:GPIO_ReadInputData。函數(shù)原型:u16GPIO_ReadInputData(GPIO_TypeDef*GPIOx)。功能描述:讀取指定端口的輸入值。輸入?yún)?shù):GPIOx,x可以是(A..G),來選擇外設(shè)。輸出參數(shù):無。返回值:GPIO端口輸入值。例如:/*讀出GPIOB端口的輸入數(shù)據(jù)并將它存儲在變量ReadValue中*/u16ReadValue;ReadValue=GPIO_ReadInputData(GPIOB);7.GPIO_ReadOutputDataBit函數(shù)函數(shù)名:GPIO_ReadOutputDataBit。函數(shù)原型:u8GPIO_ReadOutputDataBit(GPIO_TypeDef*GPIOx,u16GPIO_Pin)。功能描述:讀取指定端口引腳的輸出。輸入?yún)?shù)1:GPIOx:x可以是(A..G),來選擇外設(shè)。輸入?yún)?shù)2:GPIO_Pin:讀取指定的端口位,這個參數(shù)的值是GPIO_Pin_x,其中x是(0..15)。輸出參數(shù):無。返回值:輸出端口引腳值。例如:/*讀出PB5的輸出數(shù)據(jù)并將它存儲在變量ReadValue中*/u8ReadValue;ReadValue=GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_5);8.GPIO_ReadOutputData函數(shù)函數(shù)名:GPIO_ReadOutputData。函數(shù)原型:u16GPIO_ReadOutputData(GPIO_TypeDef*GPIOx)。功能描述:讀取指定GPIO端口的輸出值。輸入?yún)?shù):GPIOx,x可以是(A..G),來選擇外設(shè)。輸出參數(shù):無。返回值:GPIO端口輸出值。例如:/*讀出GPIOB的輸出數(shù)據(jù)并將它存儲在變量ReadValue中*/u16ReadValue;ReadValue=GPIO_ReadOutputData(GPIOB);9.GPIO_SetBits函數(shù)函數(shù)名:GPIO_SetBits。函數(shù)原型:voidGPIO_SetBits(GPIO_TypeDef*GPIOx,u16GPIO_Pin)。功能描述:設(shè)置指定的GPIO端口位。輸入?yún)?shù)1:GPIOx,x可以是(A..G),來選擇外設(shè)。輸入?yún)?shù)2:GPIO_Pin,待設(shè)置的端口位,這個參數(shù)的值是GPIO_Pin_x,其中x是(0..15)。輸出參數(shù):無。返回值:無。例如:/*設(shè)置GPIOB端口的PB5和PB9引腳*/GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_9);10.GPIO_ResetBits

函數(shù)函數(shù)名:GPIO_ResetBits。函數(shù)原型:voidGPIO_ResetBits(GPIO_TypeDef*GPIOx,u16GPIO_Pin)。功能描述:清除指定的GPIO端口位。輸入?yún)?shù)1:GPIOx,x可以是(A..G),來選擇外設(shè)。輸入?yún)?shù)2:GPIO_Pin,待清除的端口位,這個參數(shù)的值是GPIO_Pin_x,其中x是(0..15)。輸出參數(shù):無。返回值:無。例如:/*清除GPIOB端口的PB5和PB9引腳*/GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_9);11.GPIO_WriteBit

函數(shù)函數(shù)名:GPIO_WriteBit。函數(shù)原型:voidGPIO_WriteBit(GPIO_TypeDef*GPIOx,u16GPIO_Pin,BitAction

BitVal)。功能描述:設(shè)置或清除指定的GPIO端口位。輸入?yún)?shù)1:GPIOx,x可以是(A..G),來選擇外設(shè)。輸入?yún)?shù)2:GPIO_Pin,待設(shè)置或清除的端口位,這個參數(shù)的值是GPIO_Pin_x,其中x是(0..15)。輸入?yún)?shù)3:BitVal,指定待寫入的值,該參數(shù)是BitAction枚舉類型,取值必須是:BitRESET,清除端口位,或者Bit_SET,設(shè)置端口位。輸出參數(shù):無。返回值:無。例如:/*設(shè)置GPIOB端口的PB5引腳*/GPIO_WriteBit(GPIOB,GPIO_Pin_5,Bit_SET);12.GPIO_Write

函數(shù)函數(shù)名:GPIO_Write。函數(shù)原型:voidGPIO_Write(GPIO_TypeDef*GPIOx,u16PortVal)。功能描述:向指定的GPIO端口寫入值。輸入?yún)?shù)1:GPIOx,x可以是(A..G),來選擇外設(shè)。輸入?yún)?shù)2:PortVal,待寫入指定端口的值。輸出參數(shù):無。返回值:無。例如:/*將數(shù)據(jù)寫入GPIOB數(shù)據(jù)端口*/GPIO_Write(GPIOB,0x1101);13.GPIO_PinLockConfig

函數(shù)函數(shù)名:GPIO_PinLockConfig。函數(shù)原型:voidGPIO_PinLockConfig(GPIO_TypeDef*GPIOx,u16GPIO_Pin)。功能描述:鎖定GPIO端口引腳的寄存器設(shè)置。輸入?yún)?shù)1:GPIOx,x可以是(A..G),來選擇外設(shè)。輸入?yún)?shù)2:GPIO_Pin,待鎖定的端口位,這個參數(shù)的值是GPIO_Pin_x,其中x是(0..15)。輸出參數(shù):無。返回值:無。例如:/*鎖定GPIOB端口PB5和PB9引腳的值*/GPIO_PinLockConf

ig(GPIOB,GPIO_Pin_5|GPIO_Pin_9);14.GPIO_EventOutputConfig

函數(shù)函數(shù)名:GPIO_EventOutputConfig。函數(shù)原型:voidGPIO_EventOutputConfig(u8GPIO_PortSource,u8GPIO_PinSource)。功能描述:選擇GPIO端口引腳用于事件輸出。輸入?yún)?shù)1:GPIO_PortSource,選擇用于事件輸出的端口。輸入?yún)?shù)2:GPIO_PinSource,選擇事件輸出的引腳。輸出參數(shù):無。返回值:無。例如:/*選擇GPIOB的PB5引腳作為事件輸出的引腳*/GPIO_EventOutputConfig(GPIO_PortSourceGPIOB,GPIO_PinSource5);15.GPIO_EventOutputCmd函數(shù)函數(shù)名:GPIO_EventOutputCmd,函數(shù)原型:voidGPIO_EventOutputCmd(FunctionalState

NewState)。功能描述:使能或禁止事件輸出。輸入?yún)?shù):NewState,事件輸出狀態(tài)。必須是下面其中一個值:ENABLE或DISABLE。輸出參數(shù):無。返回值:無。例如:/*使能GPIOB的PB10的事件輸出*/例如:/*使能GPIOB的PB10的事件輸出*/GPIO_InitStructure,GPIO_Pin

=GPIO_Pin_10;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure,GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_EventOutputConfig(GPIO_PortSourceGPIOB,GPIO_PinSource10);GPIO_EventOutputCmd(ENABLE);16.GPIO_PinRemapConfig

函數(shù)函數(shù)名:GPIO_PinRemapConfig。函數(shù)原型:voidGPIO_PinRemapConfig(u32GPIO_Remap,F(xiàn)unctionalState

NewState)。功能描述:改變指定引腳的映射。輸入?yún)?shù)1:GPIO_Remap,選擇重映射的引腳。輸入?yún)?shù)2:NewStat,:事件輸出狀態(tài)。必須是下面其中一個值:ENABLE或DISABLE。輸出參數(shù):無。返回值:無。例如:/*I2C1_SCL映射到PB8,I2C1_SDA映射到PB9*/GPIO_PinRenapConfig(GPIO_Remap_I2C1,ENABLE);GPIO_Remap用于選擇用作事件輸出的GPIO端口。17.GPIO_EXTILineConfig

函數(shù)函數(shù)名:GPIO_EXTILineConfig。函數(shù)原型:voidGPIO_EXTILineConfig(u8GPIO_PortSource,u8GPIO_PinSource)。功能描述:選擇GPIO引腳用作外部中斷線。輸入?yún)?shù)1:GPIO_PortSource,選擇用作外部中斷線源的GPIO端口。輸入?yún)?shù)2:GPIO_PinSource,待設(shè)置的指定中斷線。輸出參數(shù):無。返回值:無。例如:/*選擇GPIOB的PB8引腳為EXTI的8號線*/GPIO_EXTILineConfig(GPIO

溫馨提示

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

評論

0/150

提交評論