基于HAL库的STM32笔记——GPIO

01.GPIO简介

GPIO(General Purpose Input Output)是一种通用的输入输出接口,用于控制硬件设备。支持4种输入模式(浮空输入、上拉输入、下拉输入、模拟输入)和4种输出模式(开漏输出、开漏复用输出、推挽输出、推挽复用输出)。同时,GPIO还支持三种最大翻转速度(2MHz、10MHz、50MHz)。

模式名称特征典型应用
浮空输入
GPIO_Mode_IN_FLOATING
可读取引脚电平,若引脚悬空,则电平不确定外部有固定电平的信号(如串口RX)
上拉输入
GPIO_Mode_IPU
可读取引脚电平,内部连接上拉电阻,悬空时默认高电平按键、NPN型传感器
下拉输入
GPIO_Mode_IPD
可读取引脚电平,内部连接下拉电阻,悬空时默认低电平PNP型传感器、高电平触发信号
模拟输入
GPIO_Mode_AIN
GPIO无效,引脚直接接入内部ADC电位器、温度、湿度
开漏输出
GPIO_Mode_Out_OD
可输出引脚电平,高电平为高阻态,低电平接VSSIIC总线、线与功能、共阳极LED
推挽输出
GPIO_Mode_Out_PP
可输出引脚电平,高电平接VCC,低电平接GNDLED、串口TX、小型继电器
复用功能的推挽输出
GPIO_Mode_AF_PP
由片上外设控制,高电平接VDD.低电平接VSSI2C_SDA/SCL、SPI_MISO
复用功能的开漏输出
GPIO_Mode_AF_OD
由片上外设控制,高电平为高阻态,低电平接VSSUART_TX、SPI_MOSI、PWM输出

关于详细的介绍,可以查看相关博主:
8种工作模式的内部电路:https://blog.csdn.net/qq_38410730/article/details/79858906
推挽输出和开漏输出区别:https://blog.csdn.net/MANONGDKY/article/details/154477018

02.配置GPIO用到的库函数

函数名功能说明
HAL_GPIO_Init();初始化引脚工作模式
HAL_GPIO_DeInit();恢复引脚为默认状态
HAL_GPIO_ReadPin();读取引脚电平
HAL_GPIO_WritePin();给引脚写0或1
HAL_GPIO_TogglePin();翻转引脚电平
HAL_GPIO_LockPin();锁定引脚电平
HAL_GPIO_EXTI_IRQHandler();外部中断服务函数
HAL_GPIO_EXTI_Callback();重写中断回调函数

03.搭建环境

主要软件:STM32CubeMX、Keil

在STM32CubeMX中配置好,便可以生成Keil工程