小白stm32入门教程学习记录:3-1GPIO输出

小白stm32入门教程学习记录:3-1GPIO输出

GPIO简介

GPIO(General Purpose Input Output)通用输入输出口

可配置为8种输入输出模式

引脚电平:0V~3.3V,部分引脚可容忍5V

输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等

输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

引脚电平:0V~3.3V,部分引脚可容忍5V

什么是 5V 容忍(FT = Five-Volt Tolerant)

STM32 芯片供电是3.3V,普通 IO 引脚最高只能输入 3.6V,超过会击穿内部二极管、烧坏芯片;

标有FT的引脚内部做了特殊耐压电路,输入模式下可以直接接 5V 电平,不会烧毁芯片

只有配置成【输入模式】时,FT 引脚才支持 5V 输入;一旦配置成推挽输出,绝对不能外接 5V!

GPIO基本结构

APB2 总线(紫色双向箭头)
  • APB2 是 STM32 高速外设总线,GPIOA、GPIOB、GPIOC、GPIOD、GPIOE全部挂载在这条总线上。

  • 作用:CPU 通过 APB2 总线读写 GPIO 内部寄存器,实现引脚配置、电平读写。

    黄色双向箭头(寄存器 ↔ 驱动器)

    CPU 改写寄存器配置后,寄存器会控制驱动器电路切换工作模式;外部引脚电平变化也会通过驱动器反馈存入 IDR 输入寄存器,实现双向信号交互。

    模式本质:配置 GPIO 模式,本质是修改寄存器,切换驱动器内部 MOS、上下拉电阻的通断;

    GPIO模式

上拉输入

IPU = Input Pull-Up,内部自带上拉电阻的输入模式

  1. 引脚作为输入,用来读取外部按键、传感器高低电平;

  2. 芯片内部集成一个上拉电阻(约 30~50KΩ)接到 3.3V;

  3. 外部没接东西时,内部电阻自动把引脚拉到高电平,不会浮空乱跳。

    STM32 通用推挽输出(GPIO_Mode_Out_PP)
    1. 先拆开两个词:推挽 + 通用输出

    推挽(Push-Pull)

    GPIO 内部有两个 MOS 管

    • 上管:接 VCC(高电平)

    • 下管:接 GND(低电平)

    1. 输出高电平:上管导通,下管截止→ 引脚直接拉到 3.3V

    2. 输出低电平:下管导通,上管截止 → 引脚直接拉到 0V,

    3. 一推一拉,所以叫推挽

      用 STM32 GPIO 控制(重点,你做外设驱动会用到)

场景 1:NPN 三极管驱动负载(继电器 / LED)图片下方

接线
  1. 发射极E → GND(有箭头的一方)

  2. 基极B → GPIO 引脚(串联 1k 限流电阻)

  3. 集电极C → 负载负极,负载正极接 3.3V/5V

控制逻辑
  • GPIO 输出高电平 (3.3V):Vb=3.3V > Ve=0V → 三极管导通,负载通电工作

  • GPIO 输出

    低电平 (0V)

    :Vb=Ve → 三极管截止,负载断电

    适配 STM32 推挽输出,最常用方案

场景 2:PNP 三极管驱动负载,图片上方

接线
  1. E → 3.3V/5V

  2. B → GPIO 引脚(串联 1k 限流电阻)

  3. C → 负载正极,负载负极接 GND

控制逻辑
  • GPIO 输出低电平 (0V):Ve=3.3V > Vb=0V → 三极管导通,负载通电

  • GPIO 输出

    高电平 (3.3V)

    :Ve=Vb → 三极管截止,负载断电

    注意:3.3V 单片机控制 PNP,最大只能切换 3.3V 负载;若要控制 5V 负载,需搭配电平转换。