目錄
一、GPIO簡介
1.1 GPIO的輸入輸出模式
1.1.1 輸入模式
1.1.2 輸出模式
二、GPIO的使用
2.1 引腳初始化
2.2 引腳使用
注:型號:STM32F407ZET6
一、GPIO簡介
? ? GPIO:通用輸入輸出接口
?? ?STM32上有A~H共8組,其中A~G7組每組有0~15號共16個引腳,H組有兩個引腳。
1.1 GPIO的輸入輸出模式
1.1.1 輸入模式
?? ? 1. 上拉輸入
?? ? ?? ?上拉電阻:信號線通過電阻連接高電平,信號的初始值是高電平。
? ? ? ??
?? ? 2. 下拉輸入
?? ? ?? ??? ?下拉電阻:信號線通過電阻連接低電平,信號的初始值為低電平。
? ? ? ? ? ??
?? ? 3. 浮空輸入
?? ? ?? ?浮空:信號線不連接高低電平,信號電壓不確定。
?? ? 5. 模擬輸入
1.1.2 輸出模式
? ? ?1. 開漏輸出(上拉或下拉)
??? ?2. 復用開漏輸出(上拉或下拉)
??? ?3. 推挽輸出(上拉或下拉)
??? ?4. 復用推挽輸出(上拉或下拉)
二、GPIO的使用
2.1 引腳初始化
?? ?初始化步驟:
?? ??? ? 1. 初始化一個GPIO配置結構體
?? ??? ??? ?頭文件(定義位置):#include "stm32f4xx_gpio.h"
?? ? ? ? 2. 使能時鐘總線
? ? ? ?
?? ??? ??? ?頭文件:#include "stm32f4xx_rcc.h"
?? ??? ??? ?原型:void ?RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState);
?? ??? ??? ?參數(shù):
??? ??? ??? ?- RCC_AHB1Periph ? ?外圍設備,可選項在定義的注釋中?
??? ??? ??? ?- NewState ? ? ? ?時鐘新狀態(tài),ENABLE、DISABLE
?? ??? ? 3. 配置這個GPIO配置結構體
?? ??? ??? ? - GPIO_Pin ? ?初始化的引腳號?? ??? ??? ??? ?
?? ??? ??? ? ?? ?可選項:GPIO_Pin_0~GPIO_Pin_15,GPIO_Pin_All
?? ??? ??? ? - GPIO_Mode ? ?輸入輸出模式
?? ??? ??? ??? ? - GPIO_Mode_IN ? ?輸入模式
?? ??? ??? ??? ? - GPIO_Mode_OUT ? ?輸出模式
?? ??? ??? ??? ? - GPIO_Mode_AF ? ?復用模式
?? ??? ??? ??? ? - GPIO_Mode_AN ? ?模擬模式
?? ??? ??? ? - GPIO_Speed ? ?工作速度(速度越快,功耗越高)
?? ??? ??? ??? ? - GPIO_Low_Speed ? ? ? ?低速,2MHz
?? ??? ??? ??? ? - GPIO_Medium_Speed ? ?中速,25MHz
?? ??? ??? ??? ? - GPIO_Fast_Speed ? ? ? ?快速,50MHz
?? ??? ??? ??? ? - GPIO_High_Speed ? ? ? ?高速,100MHz
?? ??? ??? ? - GPIO_OType ? ?輸出模式
?? ??? ??? ??? ?- GPIO_OType_PP ? ?推挽輸出
?? ??? ??? ? ?? ?- GPIO_OType_OD ? ?開漏輸出
?? ??? ??? ? - GPIO_PuPd
?? ??? ??? ? ?? ?- GPIO_PuPd_NOPULL? ? ????浮空
?? ??? ??? ? ?? ?- GPIO_PuPd_UP ? ? ? ?????????上拉
?? ??? ??? ? ?? ?- GPIO_PuPd_DOWN? ? ? ? ? 下拉
?? ??? ? 4. 調(diào)用初始化函數(shù)完場初始化
?? ??? ? ?? ?頭文件:#include "stm32f4xx_gpio.h"
?? ??? ??? ?原型:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
?? ??? ??? ?參數(shù):
??? ??? ??? ?- GPIOx ? ?引腳所在組,GPIOA~GPIOG
??? ??? ??? ?- GPIO_InitStruct ? ?配置結構體的指針
示例代碼:文章來源:http://www.zghlxwxcb.cn/news/detail-482499.html
//按鍵初始化
void Init_Key(void)
{
//初始化配置結構體
GPIO_InitTypeDef Init_Struct_KEY0;
//使能時鐘
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
//結構體配置
Init_Struct_KEY0.GPIO_Mode = GPIO_Mode_IN;
Init_Struct_KEY0.GPIO_Pin = GPIO_Pin_0;
Init_Struct_KEY0.GPIO_PuPd = GPIO_PuPd_UP;
Init_Struct_KEY0.GPIO_Speed = GPIO_High_Speed;
//調(diào)用函數(shù)完成初始化
GPIO_Init(GPIOA,&Init_Struct_KEY0);
}
//LED燈初始化
void Tiit_LED(void)
{
//初始化配置結構體
GPIO_InitTypeDef Init_Struct_LED0_1;
//使能時鐘
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);
//結構體配置
Init_Struct_LED0_1.GPIO_Mode = GPIO_Mode_OUT; //輸出模式
Init_Struct_LED0_1.GPIO_Pin = GPIO_Pin_9; //9號引腳
Init_Struct_LED0_1.GPIO_OType = GPIO_OType_PP; //推挽輸出
Init_Struct_LED0_1.GPIO_PuPd = GPIO_PuPd_NOPULL; //浮空
Init_Struct_LED0_1.GPIO_Speed = GPIO_High_Speed; //高速
//調(diào)用函數(shù)完成初始化
GPIO_Init(GPIOF,&Init_Struct_LED0_1);
//關燈
GPIO_SetBits(GPIOF,GPIO_Pin_9);
}
2.2 引腳使用
?? ?頭文件:#include "stm32f4xx_gpio.h"
?? ?讀引腳狀態(tài):
?? ??? ?讀一個引腳:uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
?? ??? ?讀一組引腳:uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
?? ?設置引腳狀態(tài):
?? ??? ?置位:void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
?? ??? ?復位:void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);文章來源地址http://www.zghlxwxcb.cn/news/detail-482499.html
到了這里,關于STM32:GPIO配置和使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!