GPIO的輸出
背景:應(yīng)用在點亮LED。LED串聯(lián)電阻再上拉,另一端與GPIO口相連。因此,GPIO輸出高電平則LED滅,輸出低電平則LED亮。
第一步工作是初始化GPIO,使能外設(shè)時鐘,因為GPIO是掛載在APB2中線上的。然后對GPIO_InitTypeDef結(jié)構(gòu)體進行初始化,設(shè)置GPIO_Pin的具體引腳,輸出頻率,工作模式,如上拉,下拉,浮空等。
關(guān)于GPIO的庫函數(shù)里有GPIO_SetBit( )和GPIO_ResetBits ( )兩個函數(shù),分別是設(shè)置指定的數(shù)據(jù)端口位和清除指定的數(shù)據(jù)端口位,就像置1和清零。
函數(shù)名 : GPIO_SetBits
函數(shù)原形: void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
功能描述: 設(shè)置指定的數(shù)據(jù)端口位
輸入?yún)?shù)1: GPIOx :x 可以是A,B ,C ,D 或者E,來選擇GPIO外設(shè)
輸入?yún)?shù)2: GPIO_Pin:待設(shè)置的端口位 。該參數(shù)可以取GPIO_Pin_x(x 可以是 0-15)的任意組合 ,如GPIO_Pin_10 | GPIO_Pin_15
函數(shù)GPIO_ResetBits 的原型為void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin),其參數(shù)的含義和上面也是類似的。
因此,點亮一個LDE燈變成調(diào)用函數(shù)
GPIO_ResetBits(GPIOx,GPIO_Pin_x); 輸出低電平點亮
熄滅一個LED燈變成
GPIO_SeBits(GPIOx,GPIO_Pin_x); 輸出高電平熄滅
GPIO輸入
當GPIO連接了外部傳感器,而傳感器的信號是開關(guān)量的時候,GPIO可能需要去輪詢輸入的狀態(tài)是高是低,這時候GPIO就需要當做輸入來用。
按鍵的動作可以用來模擬傳感器的動作,按鍵通過上拉電阻接到高電平。當按鍵按下時,會使相應(yīng)的GPIO管腳變成低電平。配置這些GPIO引腳為上拉模式,在沒有收到信號的情況下,保持這些GPIO口為高電平。
GPIO的庫函數(shù)也為我們提供了讀取某指定端口管腳的輸入--GPIO_ReadInputDataBit 正是這樣一個函數(shù)
函數(shù)名 GPIO_ReadInputDataBit
函數(shù)原形 u8 GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)
功能描述 讀取指定端口管腳的輸入
輸入?yún)?shù)1 GPIOx :x 可以是A,B ,C ,D 或者E,來選擇GPIO外設(shè)
輸入?yún)?shù)2 GPIO_Pin:待讀取的端口位
返回值 輸入端口管腳值,高或者低
u8 ReadValue;
ReadValue = GPIO_ReadInputDataBit(GPIOx, GPIO_Pin_x);
返回值ReadValue反應(yīng)了GPIO口的高低狀態(tài)。