stm32 GPIO口设置

一、在配置端口之前首先要完成以下事情:
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 ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能
(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C

你可能感兴趣的:(stm32)