GPIO
GPIO即general purpose input/output ,中文意识就是通用输入输出。
输入输出是什么?
本质就是:输入输出高低电平 (模拟信号后面再谈)。输入本质是为了获取外设的信息 ,输出本质是控制外设。
获取输入信息示例

按下低电平,松开高电平
输出高低电平控制外设示例

输出低电平,LED灯亮,输出高电平灭。
通用是什么意思?
很简单,就是大家都能用,像串口,IIC,SPI都能复用GPIO用于输入输出高低电平。

GPIO与普通引脚的关系
GPIO可以说就是普通引脚
| 外设宏 | 引脚前缀 | 说明 |
|---|---|---|
| GPIOA | PA | PA0 ~ PA15 |
| GPIOB | PB | PB0 ~ PB15 |
| GPIOC | PC | PC0 ~ PC15 |
| GPIOD | PD | PD0 ~ PD15 |
| GPIOE | PE | PE0 ~ PE15 |
| GPIOF | PF | PF0 ~ PF15 |
| GPIOG | PG | PG0 ~ PG15 |
双二极管钳位保护电路
如图就是双二极管钳位保护电路

原理:利用了二极管的单向导电性,下面我来分析一下,假设导通电压为0.7V,电流想要流入引脚就必须在 -0.7V~+4V,当电压大于4V时达到上部二极管的导通电压,电流从引脚流向VDD,当电压小于-7V时,电流从引脚流向VSS.
GPIO的输出方式
GPIO的输出方式一般有四种
| 输出模式 | 英文全称 | 内部结构 | 工作原理 | 特点 | 典型用途 |
|---|---|---|---|---|---|
| 通用推挽输出 | GPIO_Mode_Out_PP | PMOS + NMOS 一对互补管 | 写 1→PMOS 导通输出高电平;写 0→NMOS 导通输出低电平 | 驱动能力强,主动输出高 / 低电平 | LED、继电器、普通 IO 控制 |
| 通用开漏输出 | GPIO_Mode_Out_OD | 仅 NMOS 下拉管 | 写 0→NMOS 导通拉低;写 1→NMOS 截止,引脚高阻,需外部上拉才能得到高电平 | 支持 "线与"、电平转换 | 多设备共享信号线、普通开漏信号 |
| 复用推挽输出 | GPIO_Mode_AF_PP | 互补管,电平由外设接管 | 引脚不受 ODR 寄存器控制,交给片上外设输出 | 电气特性为推挽,驱动强 | SPI 的 MOSI/MISO、串口 TX、PWM 输出 |
| 复用开漏输出 | GPIO_Mode_AF_OD | NMOS,电平由外设接管 | 外设接管引脚,电气特性为开漏 | 只能拉低,高电平靠外部上拉 | I2C 的 SDA/SCL(最典型) |
P-MOS和N-MOS管
作用
要想了解输出,必须先要了解P-MOS和N-MOS管.我先对这些名词作一些解释 ,P即positive, 积极的 , N,即negative, 消极的, MOS是金属氧化物半导体. 那它是什么?又有什么作用呢?
- NMOS(N 沟道 MOS 管)
- 是什么:电压控制开关。
- 作用:导通时把引脚拉到地(低电平)。
- PMOS(P 沟道 MOS 管)
- 是什么:电压控制开关。
- 作用:导通时把引脚拉到电源(高电平)。
输出原理总图

P-MOS管和N-MOS管详细原理
P-MOS管和N-MOS管的符号

- S:source,源极,"Source"意为"源头",指这里是载流子(电子或空穴)的来源
- D:Drain,漏极,"Drain"意为"漏出",指载流子最终从这里流出器件,D当做Destination看貌似也行,但是Destination是目的地的意思,MOS管往往不是目的地,而是一个电流路过的器件,所以官方Drain更好一些。
- G:Gate,栅极,Gate就是门的意思,预示着开关的开启和关闭由它控制
说明一下,未来,S和D是要接VCC或者GND,G要接一个控制电路,来控制开关的打开和闭合,从而让S和D导通。未来真正的电流,是在S和D之间流动的。

P-MOS的导通过程(抽象)

N-MOS的导通过程(抽象)

P-MOS和N-MOS的链接图

上拉电阻
在开漏输出模式下 , 写0时会输出低电平 ,写1时会输出高阻态. 那么能不能在输出高阻态时输出高电平呢?可以 , 只需要在引脚外面加一个上拉电阻就行.
