STM32F103C8T6--深入GPIO

STM32 的 GPIO(General-Purpose Input/Output)即通用输入输出端口,是微控制器与外部世界交互的基础接口。通过 GPIO,可实现数字信号的读取(如按键输入)、输出(如 LED 控制),或配置为特殊功能(如 I2C、SPI 通信)。

GPIO 并非单一引脚,而是由 "引脚 + 配套电路 + 寄存器" 组成的最小功能模块。其硬件结构决定了它能实现输入和输出两种核心功能。

GPIO基本结构

I/O端口基本结构

8种输入输出模式

cpp 复制代码
typedef enum
{ GPIO_Mode_AIN = 0x0,
  GPIO_Mode_IN_FLOATING = 0x04,
  GPIO_Mode_IPD = 0x28,
  GPIO_Mode_IPU = 0x48,
  GPIO_Mode_Out_OD = 0x14,
  GPIO_Mode_Out_PP = 0x10,
  GPIO_Mode_AF_OD = 0x1C,
  GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;

保护电路

最右侧保护电路,当I/O pin输入电压高于上方VDD,保护二极管导通,把电流引入电源网络,低于下方VSS时,虽然二极管向上,但是波动电压实际是引入VSS进入GND。

对于5V容忍引脚,上分VDD从3.3V变为5V。下方FT为5V容忍标记。

输出电路

推挽输出(Push-Pull):输出控制P-MOS导通,VDD输出3.3V,输出控制N-MOS导通,接地0V

开漏输出(Open-Drain):只能控制N-MOS的导通,N-MOS关闭则断路,仅能拉低电平,需要外接上拉电阻才能输出高电平,或者当做地端使用。

复用开漏输出(Alternate Function Open-Drain):片上外设控制。

复用推挽输出(Alternate Function Push-Pull):片上外设控制。

输入电路

施密特触发器(Schmitt trigger):用于处理波动,只要大于施密特上限就转为高电平判定,只要低于施密特下限才转换为低电平判定,中间状态不改变判定。

模拟输入(Analog Input Mode):在这种模式下,引脚用于接收模拟信号(例如传感器输出的电压值),不经过施密特触发器。

浮空输入(Floating):无上下拉,用于读取外部不确定电平。

下拉输入(Pull-down):默认为低电平(低电平VSS的开关接通,即下拉电阻接通,默认就是VSS),当外部信号触发时读取高电平。

上拉输入(Pull-up):默认为高电平,当按键按下并接地时读取低电平。

相关推荐
周洲083013 小时前
STM32 最简工程搭建|标准库/HAL库规范化模板,零冗余可直接落地
stm32·单片机·嵌入式硬件
ACP广源盛1392462567314 小时前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#YLB3116 中端多盘存储扩展在 AI 服务中的机会与应用场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
ACP广源盛1392462567314 小时前
M6/M5 Pro Mac mini 端侧 AI 新形态@ACP#GSV5800 Serdes 长距离视频传输在 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos·音视频
OIDCAT16 小时前
国产USB转千兆网卡芯片CH398-RTL8153国产替代实测与选型
网络·嵌入式硬件·智能硬件·国产芯片·usb转千兆网卡
HRTOS16 小时前
HRTOS 4.0 驱动库:06_Storage 存储设备驱动——24C02 EEPROM与I²C驱动开发
c语言·驱动开发·嵌入式硬件·51单片机
周洲083017 小时前
STM32 串口不定长接收|空闲中断 IDLE 方案,无固定帧长限制,项目实战
stm32·单片机·嵌入式硬件
我和头发拼了19 小时前
STM32--10硬件读写MPU6050
stm32·单片机·嵌入式硬件
糖糖单片机设计21 小时前
基于STM32的鱼缸水质检测系统
stm32·单片机·嵌入式硬件
HRTOS21 小时前
HRTOS 4.0 正式发布:Driver Library 基础外设驱动模块介绍
驱动开发·单片机·嵌入式硬件·51单片机
染予21 小时前
20个点位下发该如何正常操作?
单片机·嵌入式硬件