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):默认为高电平,当按键按下并接地时读取低电平。

相关推荐
嵌入式老牛13 小时前
HC32F460_ADC驱动(三)
单片机·嵌入式硬件
秀秀更健康13 小时前
stm32: 系统时钟如何配置为72Mhz
stm32·单片机·嵌入式硬件
QAQ小菜鸟17 小时前
一、安装Altium Designer 26.1
嵌入式硬件
嵌入式-老费18 小时前
esp32开发与应用(用面包板去学模块)
嵌入式硬件
归零鸟19 小时前
WD Elements移动硬盘能识别出盘但不能出盘的修复记录
stm32·单片机·嵌入式硬件
追兮兮20 小时前
MCUQuickStart v1.1.0发布,一键生成Keil工程+RTOS模板
stm32·单片机·嵌入式硬件·freertos·gd32·keil5
国科安芯20 小时前
ASP7A84AS与主流架构兼容替代及系统级电源完整性解决方案的深度研究
单片机·嵌入式硬件·架构
kaikaile199520 小时前
STC8单片机实现简单花样DMX512控制器
单片机·嵌入式硬件
szxinmai主板定制专家20 小时前
RK3568 + CODESYS+实时系统运动控制器PLC,支持 AI 视觉目标检测,预测性维护,混合多系统部署,多路模拟量采集
arm开发·人工智能·嵌入式硬件·fpga开发
rit843249920 小时前
STM32移植NES模拟器指南
stm32·单片机·嵌入式硬件