STM外设介绍1(GPIO)-2. GPIO 在 STM32F103 上的应用

时间:2024-11-26 07:00:14

GPIO (General Purpose Input/Output) 是嵌入式系统最常用的外设之一,用于连接和控制外部设备,如 LED、按键、传感器、继电器等。

1.1 GPIO 模式

GPIO 可配置为不同的工作模式,以满足不同的硬件需求:

模式 描述
输入模式 GPIO 用于接收外部信号。
- 浮空输入 (Floating Input) 无内部上拉或下拉电阻,适合外部信号驱动。
- 上拉输入 (Pull-up Input) 内部连接上拉电阻,输入默认为高电平。
- 下拉输入 (Pull-down Input) 内部连接下拉电阻,输入默认为低电平。
- 模拟输入 (Analog Input) 用于连接模拟信号(如 ADC)。
输出模式 GPIO 用于输出信号。
- 推挽输出 (Push-Pull) 输出高电平或低电平,适合驱动 LED、继电器等。
- 开漏输出 (Open-Drain) 输出低电平或高阻状态,适合与 I²C 等总线连接。
复用功能模式 GPIO 引脚复用为外设功能(如 USART、SPI、I²C 等)。
输入/输出高速模式 支持快速切换(最高可达 50 MHz),适用于高速通信。

1.2 GPIO 特点

  1. 可配置方向:每个引脚可以独立配置为输入或输出。
  2. 中断功能:输入模式支持边沿触发中断(上升沿、下降沿或双边沿)。
  3. 复用功能:每个引脚可复用为多种外设功能。
  4. 端口组:STM32 GPIO 按端口分组,通常为 A、B、C 等,每组包含最多 16 个引脚(PA0-PA15、PB0-PB15)。

1.3 GPIO 控制寄存器

在 STM32F103 上,GPIO 的配置通过以下寄存器实现:

寄存器名称 描述
GPIOx_CRL 配置低 8 个引脚(Pin 0 - Pin 7)的模式和功能。
GPIOx_CRH 配置高 8 个引脚(Pin 8 - Pin 15)的模式和功能。
GPIOx_IDR 输入数据寄存器,用于读取引脚的电平状态。
GPIOx_ODR 输出数据寄存器,用于控制引脚的输出电平。
GPIOx_BSRR 置位/复位寄存器,用于高效地设置或清除引脚。
GPIOx_BRR 清除寄存器,用于快速清除指定引脚的状态。
GPIOx_LCKR 引脚锁定寄存器,用于防止误修改引脚配置。