GPIO相关函数
初始化函数
GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
相关解读如下:
GPIO_TypeDef: GPIO组结构体,包含七个寄存器
GPIO_InitTypeDef: GPIO初始化结构体,包含
typedef struct
{
uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;
typedef enum
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
typedef enum
{ 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, //复用开漏
GPIO_Mode_AF_PP = 0x18 //复用推挽
}GPIOMode_TypeDef;
GPIO_Init具体使用方法:
读取输入电平模式
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
实际使用:
GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_5);
uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)
GPIO_ReadInputData(GPIOA);
读取输出电平
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)
设置输出电平
GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) //操作BSRR,置1
GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin //操作BRR,置0
总体配置过程
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; // 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出高
}