跳到主要内容

STM32 GPIO配置

介绍

GPIO(通用输入输出)是STM32微控制器中最基本且最重要的外设之一。它允许微控制器与外部设备进行数字信号的交互。通过配置GPIO引脚,你可以将其设置为输入模式来读取外部信号,或者设置为输出模式来控制外部设备。

在STM32中,每个GPIO引脚都可以独立配置为输入、输出或复用功能。此外,GPIO引脚还可以配置为推挽输出、开漏输出、上拉/下拉输入等模式。本教程将逐步讲解如何配置STM32的GPIO引脚,并通过实际案例展示其应用。

GPIO配置步骤

1. 启用GPIO时钟

在STM32中,每个外设(包括GPIO)都有一个独立的时钟控制。在使用GPIO之前,必须先启用其时钟。STM32的时钟系统由RCC(复位和时钟控制)模块管理。

c
#include "stm32f4xx.h"  // 包含STM32F4系列的头文件

void GPIO_Config(void) {
// 启用GPIOA的时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
}

2. 配置GPIO引脚模式

每个GPIO引脚可以配置为以下几种模式之一:

  • 输入模式:用于读取外部信号。
  • 输出模式:用于驱动外部设备。
  • 复用功能模式:用于将引脚连接到其他外设(如UART、SPI等)。
  • 模拟模式:用于ADC或DAC等模拟信号处理。
c
GPIO_InitTypeDef GPIO_InitStruct;

// 配置PA5引脚为推挽输出模式
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // 推挽输出
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // 输出速度
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; // 无上拉/下拉
GPIO_Init(GPIOA, &GPIO_InitStruct);

3. 读取或写入GPIO引脚

配置完成后,你可以通过以下方式读取或写入GPIO引脚:

  • 读取输入引脚:使用 GPIO_ReadInputDataBit 函数。
  • 写入输出引脚:使用 GPIO_SetBitsGPIO_ResetBits 函数。
c
// 读取PA0引脚的状态
uint8_t pinState = GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);

// 将PA5引脚设置为高电平
GPIO_SetBits(GPIOA, GPIO_Pin_5);

// 将PA5引脚设置为低电平
GPIO_ResetBits(GPIOA, GPIO_Pin_5);

实际案例:控制LED灯

假设你有一个LED灯连接到STM32的PA5引脚。以下代码展示了如何通过配置GPIO来控制LED灯的亮灭。

c
#include "stm32f4xx.h"

void Delay(uint32_t nCount) {
for(; nCount != 0; nCount--);
}

int main(void) {
// 启用GPIOA时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

// 配置PA5为推挽输出
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStruct);

while(1) {
// 点亮LED
GPIO_SetBits(GPIOA, GPIO_Pin_5);
Delay(1000000);

// 熄灭LED
GPIO_ResetBits(GPIOA, GPIO_Pin_5);
Delay(1000000);
}
}
提示

在实际项目中,建议使用定时器或系统滴答定时器(SysTick)来实现精确的延时,而不是使用简单的 for 循环。

总结

通过本教程,你应该已经掌握了STM32 GPIO的基本配置方法。GPIO是STM32中最常用的外设之一,几乎所有的项目都会用到它。通过合理配置GPIO引脚,你可以实现与外部设备的数字信号交互。

附加资源

练习

  1. 尝试将PA5引脚配置为开漏输出模式,并观察LED灯的行为。
  2. 使用GPIO输入模式读取一个按钮的状态,并根据按钮的状态控制LED灯的亮灭。