STM32 GPIO 读写操作
介绍
GPIO(General Purpose Input/Output,通用输入输出)是 STM32 微控制器中最基本的外设之一。它允许微控制器与外部设备进行数字信号的交互。通过 GPIO,STM32 可以读取外部信号(如按钮状态)或控制外部设备(如 LED 灯)。
在本文中,我们将学习如何配置 STM32 的 GPIO 引脚,并实现基本的读写操作。我们将从 GPIO 的基础概念开始,逐步深入到实际的代码实现。
GPIO 基础
GPIO 引脚可以配置为输入或输出模式。在输入模式下,GPIO 引脚可以读取外部信号的状态(高电平或低电平)。在输 出模式下,GPIO 引脚可以驱动外部设备(如点亮 LED 或控制继电器)。
GPIO 模式
STM32 的 GPIO 引脚可以配置为以下几种模式:
- 输入模式:用于读取外部信号。
- 输出模式:用于驱动外部设备。
- 复用功能模式:用于将 GPIO 引脚配置为其他外设的功能(如 UART、SPI 等)。
- 模拟模式:用于将 GPIO 引脚配置为模拟输入(如 ADC)。
GPIO 速度
GPIO 引脚的速度决定了其输出信号的切换速度。STM32 提供了多种速度选项,通常用于高速信号传输的场景。
GPIO 上拉/下拉电阻
GPIO 引脚可以配置为上拉或下拉电阻,以确保在未连接外部设备时引脚处于已知状态。
GPIO 配置
在 STM32 中,GPIO 的配置通常通过 HAL 库(Hardware Abstraction Layer)来完成。以下是一个基本的 GPIO 配置示例:
#include "stm32f4xx_hal.h"
void GPIO_Config(void) {
// 启用 GPIOA 时钟
__HAL_RCC_GPIOA_CLK_ENABLE();
// 配置 GPIO 引脚
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_5; // 选择引脚 5
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 配置为推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL; // 不使用上拉/下拉电阻
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 低速模式
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // 初始化 GPIOA
}
在上面的代码中,我们配置了 GPIOA 的第 5 引脚为推挽输出模式,并且不使用上拉或下拉电阻。