GPIO简介
GPIO(英语:General-purposeinput/output),通用型之输入输出的简称,其接脚可以 供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO) 或通用输入与输出(GPIO)
GPIO8 种工作模式
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU 上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
工作模式的介绍
模拟输入:是用来接受模拟信号输入(主要是用作ADC或者看门狗)
浮空输入:当GPIO采用浮空输入模式时,STM32的引脚状态是不确定的,此时STM32得到的电平状态完全取决于GPIO外部的电平状态,所以说在GPIO外部的引脚悬空时,读取该端口的电平状态是个不确定的值。
上拉、下拉输入:在GPIO外部连接的电路未工作时,STM32读取的GPIO状态是不确定的,所以可以采用带上拉或者下拉输入的模式先给MCU一个确定的状态,当外部电路电平状态发生变化时,易于MCU的判断。这样可以增强MCU的抗干扰能力
开漏输出:如果外部不接上拉电阻,只能输出低电平,所以要想输出高电平必须要外接上拉电阻。主要好处是可以用来匹配不同的电平信号以实现不同的系统间的通信。
推挽输出;电平在0v - 3.3v 之间输出
复用模式:类似于第二功能(这里还没用到暂时不写)
使用方法
初始化与反初始化:
//初始化引脚
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);
//重置引脚
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);
基础操作:
//读取电平状态
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
//设置引脚状态
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
//转换引脚状态
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
//锁定引脚状态
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
GPIO_PIN_RESET 代表 0
GPIO_PIN_SET 代表 1
GPIO_TypeDef 是操作一个GPIO块的句柄
GPIO_Pin 是这个块中的某个引脚
其实跟51单片机也麻烦不了太多。