在 STM32 单片机中,GPIO(通用输入输出)的模式决定了引脚的工作方式,上述几种模式可分为 输入模式 、输出模式和复用功能模式三大类。以下是详细介绍及典型使用场景:
一、输入模式(用于接收外部信号)
-
GPIO_Mode_AIN(Analog Input,模拟输入)
原理 :引脚工作在模拟输入模式,此时 GPIO 的数字输入缓冲器被关闭,引脚直接连接到片内 ADC(模数转换器)的输入通道。
特点 :用于采集模拟信号(连续变化的电压信号),不受数字电路干扰。
典型场景 :
连接模拟传感器(如温湿度传感器、光照传感器、 potentiometer 电位器等)。
需要通过 ADC 读取外部电压值的场景(如电池电压检测)。 -
GPIO_Mode_IN_FLOATING(Floating Input,浮空输入)
原理 :引脚为输入状态,内部既无上拉电阻也无下拉电阻,引脚电平完全由外部信号决定(若外部无驱动,引脚电平会随机漂移,称为 “浮空”)。
特点 :响应速度快,适合接收外部明确驱动的数字信号。
典型场景 :
接收高频数字信号(如 USART/UART 的 RX 引脚、SPI 的 MISO 引脚),因为外部设备(如另一块单片机)会主动输出高低电平。
需要检测外部脉冲信号的场景(如红外接收、外部中断触发信号)。 -
GPIO_Mode_IPD(Input Pull-Down,下拉输入)
原理 :引脚为输入状态,内部集成下拉电阻(通常约 30-50kΩ),将引脚默认拉到低电平(GND);当外部输入高电平时,引脚电平被拉高。
特点 :避免引脚悬空(防止干扰导致电平不稳定),默认状态为低电平。
典型场景 :
按键检测(按键一端接 VDD,另一端接该引脚):按键未按下时,引脚被下拉为低电平;按下时,引脚被外部拉高为高电平。
外部信号可能处于 “断开” 状态的场景(如限位开关,未触发时引脚需保持确定的低电平)。 -
GPIO_Mode_IPU(Input Pull-Up,上拉输入)
原理 :引脚为输入状态,内部集成上拉电阻(通常约 30-50kΩ),将引脚默认拉到高电平(VDD);当外部输入低电平时,引脚电平被拉低。
特点 :避免引脚悬空,默认状态为高电平(最常用的输入模式之一)。
典型场景 :
按键检测(按键一端接 GND,另一端接该引脚):按键未按下时,引脚被上拉为高电平;按下时,引脚被拉低为低电平。
外部设备的 “状态信号”(如模块就绪信号,未就绪时为高电平,就绪时输出低电平)。
二、输出模式(用于驱动外部设备) -
GPIO_Mode_Out_PP(Output Push-Pull,推挽输出)
原理 :输出级由两个互补的 MOS 管组成(一个接 VDD,一个接 GND)。输出高电平时,上管导通、下管截止,直接输出 VDD;输出低电平时,下管导通、上管截止,直接输出 GND。
特点 :
输出高低电平驱动能力强(可直接驱动 LED、继电器等中小功率设备)。
高低电平明确(高电平接近 VDD,低电平接近 GND),无需要外部电阻。
典型场景 :
驱动 LED、蜂鸣器、小型继电器。
输出数字控制信号(如控制电机驱动模块的方向信号)。 -
GPIO_Mode_Out_OD(Output Open-Drain,开漏输出)
原理 :输出级只有一个 NMOS 管(接 GND),PMOS 管不工作。输出低电平时,NMOS 导通,引脚接地;输出高电平时,NMOS 截止,引脚相当于 “断开”(高阻态),需通过外部上拉电阻才能输出高电平。
特点 :
无法直接输出高电平,必须外接上拉电阻(上拉到 VDD 或其他电压,如 3.3V 转 5V 电平转换)。
支持 “线与” 功能(多个开漏输出引脚接在一起,只要有一个输出低电平,总线就为低电平)。
典型场景 :
I2C 通信总线(SDA/SCL 引脚):多个设备共用总线,通过开漏输出实现线与功能。
电平转换(如 3.3V 单片机驱动 5V 设备,上拉电阻接 5V,输出高电平时为 5V)。
驱动多个设备(避免多个推挽输出直接并联导致短路)。
三、复用功能模式(引脚用于外设功能)
当 GPIO 引脚不作为通用 IO,而是用于片内外设(如 USART、SPI、TIM 等)时,需配置为复用功能模式。此时引脚的控制权交给外设,而非 CPU 直接控制。 -
GPIO_Mode_AF_PP(Alternate Function Push-Pull,复用推挽输出)
原理 :引脚功能由外设控制(如 USART 的 TX 引脚、SPI 的 MOSI 引脚),输出级为推挽结构(同 Out_PP)。
特点 :外设输出信号时,具备强驱动能力,无需外部上拉电阻。
典型场景 :
USART/UART 的 TX 引脚(发送数据,需要强驱动能力)。
SPI 的 MOSI(主机输出)、SCK(时钟)引脚。
TIM(定时器)的 PWM 输出引脚(驱动电机、LED 调光等)。 -
GPIO_Mode_AF_OD(Alternate Function Open-Drain,复用开漏输出)
原理 :引脚功能由外设控制,输出级为开漏结构(同 Out_OD),高电平时需外部上拉电阻。
特点 :支持线与功能,适合多设备共享总线的外设。
典型场景 :
I2C 通信的 SDA(数据)、SCL(时钟)引脚(复用为 I2C 外设功能,依赖开漏输出实现线与)。
多个设备共享的控制信号(如 SMBus 总线)。
总结
输入模式 :根据是否需要上下拉、是否为模拟信号选择(AIN 用于 ADC,IPU/IPD 用于按键,浮空用于高速通信)。
输出模式 :推挽(Out_PP)适合直接驱动设备;开漏(Out_OD)适合总线通信或电平转换。
复用模式 :根据外设需求选择推挽(强驱动)或开漏(线与),用于外设功能(如 USART、I2C、SPI 等)。
实际使用时需结合外设手册和电路设计,选择匹配的 GPIO 模式以保证稳定性和功能正确性。

4554

被折叠的 条评论
为什么被折叠?



