GPIO
- 通用的输入输出口
- 可配置8种输入输出模式,浮空输入、上拉输入、下拉输入、模拟输入、推挽输出、开漏输出、复用开漏和复用推挽。
- 引脚电平0~3.3v,部分引脚可容忍5v
- 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等
- 输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等
斯密特触发器
输出特性:
- 输入低于V_T-时,输出为低电平(或高电平,取决于电路设计)。
- 输入高于V_T+时,输出为高电平(或低电平)。
- 输入在V_T-和V_T+之间时,输出保持原状态。
GPIO输入模式:
- STM32的GPIO可以配置为输入模式,部分引脚支持施密特触发器(通过寄存器使能)。
例如:
GPIO_Mode_IPU(上拉输入)或GPIO_Mode_IPD(下拉输入)默认启用施密特触发器。- 适用于按键检测、外部中断等场景,避免机械抖动导致误触发。
推挽模式、开漏模式
推挽模式(Push-Pull)
-
结构:
- 输出高电平时:P-MOS导通,N-MOS截止,引脚输出高电平(接近VCC)。
- 输出低电平时:N-MOS导通,P-MOS截止,引脚输出低电平(接近GND)。
-
特点:
- 强驱动能力:高低电平均能主动驱动,适合高速信号(如SPI时钟)。
- 功耗较低:无静态电流(仅切换时耗电)。
- 不可线与:多个推挽输出引脚不能直接并联(可能短路)。
-
应用场景:
- 通用数字输出(如控制LED、通信协议如I²C的SCL)。
- 需要快速翻转的场合(如PWM输出)。
开漏模式(Open-Drain)
-
结构:
仅有一个N-MOS管,无P-MOS。- 输出高电平时:N-MOS截止,引脚处于高阻态(需外部上拉电阻拉高)。
- 输出低电平时:N-MOS导通,引脚输出低电平。
-
特点:
- 弱驱动高电平:依赖外部上拉电阻,上升速度较慢。
- 支持线与:多个开漏引脚可并联,实现“与”逻辑(如I²C总线)。
- 电平兼容:可通过上拉到不同电压(如3.3V器件控制5V设备)。
-
应用场景:
- I²C总线(SDA/SCL需多设备共享总线)。
- 电平转换(如3.3V MCU控制5V逻辑)。
- 需要外部电路决定高电平的场合(如中断信号线)。
模拟输入
模拟输入(Analog Input)是MCU采集模拟信号(如电压、温度传感器输出)的功能,STM32通过ADC(模数转换器) 实现。以下是核心要点:
1. 基本原理
- ADC作用:将连续的模拟电压(如0-3.3V)转换为离散的数字值(如12位ADC对应0-4095)。
- 分辨率:STM32F1系列ADC通常为12位,即电压步进值为
Vref / 4096(若Vref=3.3V,步进≈0.8mV)。 - 参考电压(Vref) :通常接VCC(3.3V),也可外接高精度基准源。