一、在配置端口之前首先要完成以下事情:
1、自己新建好工程、配置好时钟
2、准备好一个端口已经配置好的模版
3、在工程中先打开:
main.c
stm32f4xx_hal_gpio.h
stm32f4xx_hal_gpio.c
二、使能端口时钟
调用函数:__HAL_RCC_GPIOF_CLK_ENABLE();
这样GPIOF的时钟就使能了
三、配置好端口初始化
在stm32f4xx_hal_gpio.h中找到端口初始化函数的声明处:
1、GPIO_TypeDef *GPIOx,这个很简单,就不说了,调用的时候选择为GPIOA-GPIOG就可以
2、GPIO_InitTypeDef *GPIO_Init,这个是重点
我们首先找到它的定位位置:

我们可以看到这是一个类型别名,这样的结构体类型包含五个,pin(引脚)、Mode(模式)、Pull(输出)、Speed(速度)、Alternate(端口复用功能 );那么我们现在可以知道,首先要定义一个这样的结构体变量,然后对它的这五个成员进行赋值(复用功能可用可不用),然后再去使用它,去调用这个端口初始化函数,最后就可以配置好端口
四、端口的配置本质
1、输入/输出模式(参考stm32手册)
(1)GPIO_Mode_AIN 模拟输入
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入
(5)GPIO_Mode_Out_OD 开漏输出
(6)GPIO_Mode_Out_PP 推挽输出
(7)GPIO_Mode_AF_OD 复用开漏输出
(8)GPIO_Mode_AF_PP 复用推挽输出
在STM32中选用IO模式
(1) 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1
(2)带上拉输入_IPU——IO内部上拉电阻输入
(3)带下拉输入_IPD—— IO内部下拉电阻输入
(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电
(5)开漏输出_OUT_OD ——I