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);//锁定指定管脚的配置寄存器
posted @ 2025-08-25 10:37  奶龙大王  阅读(20)  评论(0)    收藏  举报