GPIO
GPIO
目录
1、简介
2、输出类型
3、使用方法
1、简介
- GPIO(英语:General-purpose input/output),通用型之输入输出的简称,功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO)
- 既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们。
![alt text]()
2、输出类型
(1)推挽输出
- 使用寄存器直接驱动外设
(2)开漏输出
- 使用寄存器,利用外部电源驱动外设
3、使用方法
LL库
这里以输出为例
初始化:
GPIO_InitTypeDef GPIO_InitStructure;//初始化GPIO的结构体
RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOx, ENABLE); //使能对应的时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x;//选择复用的GPIO管脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//选择复用的模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//传输信号的素的
GPIO_Init(GPIOE, &GPIO_InitStructure);//对定义的结构体进行初始化
控制管脚
GPIO_SetBits(GPIOx, GPIOx_Pin_x); //对相应管脚置高电平
GPIO_ResetBits(GPIOx, GPIOx_Pin_x); //对相应管脚置低电平
这里以输入为例
初始化:
GPIO_InitTypeDef GPIO_InitStructure;//初始化GPIO的结构体
RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOx, ENABLE); //使能对应的时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_x;//选择复用的GPIO管脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//选择复用的模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//传输信号的素的
GPIO_Init(GPIOE, &GPIO_InitStructure);//对定义的结构体进行初始化
控制管脚
GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读取指定管脚的输入bit值
GPIO_ReadInputData(GPIO_TypeDef* GPIOx);//读取指定管脚的输入数据
GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读取指定管脚的输出bit值
GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);//读取指定管脚的输出数据
HAL库
/*-----------和LL库基本一致-----------*/
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.Pin = GPIO_PIN_x;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); //LL库中初始化的函数
控制管脚
HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//读取管脚数据
HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);//对指定管脚写入数据
HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//反转指定管脚的数据
HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);//锁定指定管脚的配置寄存器


浙公网安备 33010602011771号