STM32 HAL GPIO
介绍
GPIO(通用输入输出)是 STM32 微控制器中最基本的功能之一。它允许你通过配置引脚来读取外部信号或控制外部设备。STM32HAL 库提供了一套简单易用的 API,帮助你快速配置和控制 GPIO 引脚。
在本教程中,我们将学习如何使用 STM32HAL 库来配置 GPIO 引脚,并通过代码示例展示如何读取输入信号和控制输出信号。
GPIO 的基本概念
GPIO 引脚可以配置为以下几种模式:
- 输入模式:用于读取外部信号。
- 输出模式:用于控制外部设备。
- 复用模式:用于将引脚配置为 其他外设功能(如 UART、SPI 等)。
- 模拟模式:用于模拟信号输入(如 ADC)。
每个 GPIO 引脚还可以配置为上拉、下拉或浮空模式,以确定引脚在没有外部信号时的状态。
配置 GPIO 引脚
1. 初始化 GPIO 引脚
在使用 GPIO 引脚之前,需要先对其进行初始化。以下是一个初始化 GPIO 引脚的示例代码:
#include "stm32f4xx_hal.h"
void GPIO_Init(void) {
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 使能 GPIO 时钟
__HAL_RCC_GPIOA_CLK_ENABLE();
// 配置 GPIO 引脚
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; // 低速模式
// 初始化 GPIO
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
2. 控制 GPIO 输出
初始化完成后,你可以使用 HAL_GPIO_WritePin
函数来控制 GPIO 引脚的电平状态:
void Toggle_LED(void) {
// 将 GPIO 引脚 5 设置为高电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
// 延时
HAL_Delay(500);
// 将 GPIO 引脚 5 设置为低电平
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
// 延时
HAL_Delay(500);
}