GPIO工作模式
·
1.GPIO的八种工作模式
STM32的GPIO引脚内部结构复杂,但可以简化为输入和输出两条路径。八种模式正是通过配置内部的上/下拉电阻、TTL施密特触发器以及输出MOS管电路来实现的。
| 模式 | 类型 | 核心原理 | 典型应用 |
|---|---|---|---|
| GPIO_Mode_AIN | 模拟输入 | 断开TTL触发器,信号直接连接ADC外设。 | 模拟量读取(如电压采集)。 |
| GPIO_Mode_IN_FLOATING | 浮空输入 | 上/下拉电阻断开,电平完全由外部信号决定。 | 电平不确定,适合高阻抗信号或已外部上拉的信号(如UART RX)。 |
| GPIO_Mode_IPD | 下拉输入 | 内部下拉电阻接通,引脚悬空时读取为低电平(0)。 | 默认低电平有效的输入(如接VCC的按键)。 |
| GPIO_Mode_IPU | 上拉输入 | 内部上拉电阻接通,引脚悬空时读取为高电平(1)。 | 默认高电平有效的输入(如接GND的按键)。 |
| GPIO_Mode_Out_PP | 推挽输出 | 高低电平均有驱动能力,可直接输出0或3.3V。 | 控制LED、蜂鸣器等数字器件。 |
| GPIO_Mode_Out_OD | 开漏输出 | 仅低电平有驱动能力,高电平为高阻态,需外接上拉电阻。 输出低电平(0):开关闭合,引脚被内部MOS管强行拉到0V。这个能力很强,能吸纳电流(灌电流)。 输出高电平(1):开关断开,引脚内部相当于悬空(高阻态),它自己既不能输出3.3V,也不能输出5V。引脚的实际电压完全由外部电路决定。 |
I2C总线(实现多设备线与)、电平匹配(如输出5V高电平,将GPIO配置为开漏输出,然后将上拉电阻的另一端接在5V电源上)。IIC一般不使用芯片内部的电阻是因其内部电阻的阻值固定,使用外部的电阻可以做速率、功耗平衡。 |
| GPIO_Mode_AF_PP | 复用推挽输出 | 引脚的控制权交给片上外设(如TIM、USART)。 | PWM输出、SPI通信。 |
| GPIO_Mode_AF_OD | 复用开漏输出 | 同上,但为开漏结构。 | I2C、SMBUS等需要线与功能的总线。 |
| 模式 | 内部结构 | 高电平实现 | 核心优势 | 典型应用 |
|---|---|---|---|---|
| 推挽输出 | 两个MOS管(一上一下) | 自身驱动输出3.3V | 输出能力强,高低电平切换快 | 控制LED、蜂鸣器,SPI通信 |
| 开漏输出 | 只有一个下拉MOS管 | 必须外接上拉电阻 | 实现“线与”功能,可灵活匹配不同电压 | I2C总线,电平转换 |

如何选择?
- 点灯:推挽输出,电流驱动能力强。
- 读按键:推荐上拉输入。因为按键通常一端接地,另一端接GPIO,内部上拉可让未按下时电平稳定为高,按下时被拉低,逻辑清晰且无需外部电阻。
- 通信:I2C用开漏(复用),SPI用推挽(复用)。
更多推荐



所有评论(0)