在 STM32 的开发中,GPIO(通用输入/输出)是一种极其重要且常用的外设资源。无论是用于控制 LED、按键、电机驱动,还是与其他外设之间通信,GPIO 都是实现这些功能的核心接口。
一、示例代码
这是一个在 STM32 HAL 库中非常常见的初始化函数,用于配置 GPIO 引脚为输出模式,并设置相应的参数。
1 | /** |
二、GPIO_InitStruct
参数配置
1、GPIO_InitStruct.Pin
选择要配置的引脚
2、 GPIO_InitStruct.Mode
设置 GPIO 引脚的 工作模式。
推挽输出(Output Push Pull)
- 输入参数:GPIO_MODE_OUTPUT_PP
- 描述:引脚输出低或高电平,有驱动能力,适用于驱动负载
- 场景:LED、数码管、外部电路驱动
开漏输出(Output Open Drain)
- 输入参数:GPIO_MODE_OUTPUT_OD
- 描述:输出高电平由外部上拉电阻决定,输出低电平由内部施放
- 场景:可能用于 I2C、逻辑总线
复用推挽输出
- 输入参数:GPIO_MODE_OUTPUT_PP
- 描述:GPIO_MODE_OUTPUT_AF_PP
- 场景:SPI、I2C、UART 通信接口
复用开漏输出
- 输入参数:GPIO_MODE_OUTPUT_AF_OD
- 描述:用于通信协议(如 SPI、UART、I2C)等,信号链路由外部上拉
- 场景:需要外部上拉的通信协议
3、GPIO_InitStruct.Pull
设置 GPIO 引脚的 上拉或下拉电阻。
启用上拉电阻
- 输入参数:GPIO_PULLUP
- 描述:默认状态为高电平,适用于按钮、传感器等
启用下拉电阻
- 输入参数:GPIO_PULLUP
- 描述:默认状态为低电平
无上下拉
- 输入参数:GPIO_NOPULL
- 描述:不自动上拉或下拉引脚
4、GPIO_InitStruct.Speed
设置 GPIO 引脚工作速度
低速
- 输入参数:GPIO_SPEED_FREQ_LOW
- 描述:最高5MHz
中速
- 输入参数:GPIO_SPEED_FREQ_MEDIUM
- 描述:5MHz ~ 25MHz
高速
- 输入参数:GPIO_SPEED_FREQ_HIGH
- 描述:25MHz ~ 50MHz
极高速
- 输入参数:GPIO_SPEED_FREQ_VERY_HIGH
- 描述:50MHz ~ 120MHz