MCU的GPIO 八种模式

对于MCU来说,GPIO总共有8种模式:

  1. 浮空输入模式
  2. 上拉输入模式
  3. 下拉输入模式
  4. 模拟输入模式
  5. 推挽输出模式
  6. 开漏输出模式
  7. 复用推挽输出模式
  8. 复用开漏输出模式

一、STM32 普通 GPIO 内部逻辑图

1、保护二极管

IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。

当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。也叫钳位二极管

2、P-MOS 管和 N-MOS 管

由P-MOS管和N-MOS管组成的单元电路使得GPIO具有"推挽输出"和"开漏输出"的模式。

3、TTL 肖特基触发器

信号经过触发器后,模拟信号转化为 0 和 1 的数字信号。但是,当 GPIO 引脚作为 ADC 采集电压的输入通道时,用其"模拟输入"功能,此时信号不再经过触发器进行TTL电平转换。(可以理解为一个比较器,大于某个值是1,小于某个值是0)

查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有"FT"一列,这代表着这个GPIO口时兼容3.3V和5V的;

如果没有标注"FT",就代表着不兼容5V。比如STM32F103VET6的GPIOE口那一组全部兼容5V,其他组是部分兼容5V。

二、模式

1、浮空输入模式

当GPIO引脚配置为浮空输入模式时,外部电平信号通过IO引脚传输到施密特触发器(即图中TTL肖特基触发器)并最终进入输入数据寄存器,MCU通过读取输入数据寄存器获取外部电平信号。

现象体现:

复制代码
IO引脚浮空时,读取输入电平信号可能为0,也可能为1
IO引脚接高电平时,读取输入电平信号为1
IO引脚接低电平时,读取输入电平信号为0

2、上拉输入模式

当GPIO引脚配置为上拉输入模式时,上拉电阻开关闭合,当IO引脚未接电平信号时,VDD(高电平信号)通过上拉电阻经过施密特触发器存入输入数据寄存器,因此未接电平信号时读取该IO引脚输入数据寄存器值为1。

现象体现:

复制代码
IO引脚浮空时,读取输入电平信号为1
IO引脚接高电平时,读取输入电平信号为1
IO引脚接低电平时,读取输入电平信号为0

3、下拉输入模式

当GPIO引脚配置为下拉输入模式时,下拉电阻开关闭合,当IO引脚未接电平信号时,VSS(低电平信号)通过下拉电阻经过施密特触发器存入输入数据寄存器,因此未接电平信号时读取该IO引脚输入数据寄存器值为0。

现象体现:

复制代码
IO引脚浮空时,读取输入电平信号为0
IO引脚接高电平时,读取输入电平信号为1
IO引脚接低电平时,读取输入电平信号为0

4、模拟输入模式

当GPIO引脚配置为模拟输入模式时,IO引脚信号直接通过模拟输入端进入片上外设模块,IO口外部电压信号为模拟量,非电平形式。通常配置ADC时GPIO引脚初始化配置为模拟输入模式。

5、推挽输出模式

当GPIO引脚配置为推挽输出模式时,推挽电路(push-pull)就是两个不同极性晶体管间连接的输出电路。推挽电路采用两个参数相同的MOSFET管,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小效率高。当设置输出的值为为高电平时,P-MOS导通,N-MOS截止,此时I/O端口的电平就由P-MOS管决定为高电平;当设置输出的值为低电平的时候,P-MOS管处于截止状态,N-MOS管处于导通状态,此时I/O端口的电平就由N-MOS管决定为低电平,同时IO口输出的电平可以通过输入电路读取,此时I/O端口的电平一定是输出的电平

现象体现:

复制代码
	当IO引脚配置输出高电平信号时,读该引脚信号一直为高电平信号1,此时可以通过直接读取该引脚输入数据寄存器获取输出电平信号
	当IO引脚配置输出低电平时,输出信号一直为低电平信号0,此时可以通过直接读取该引脚输入数据寄存器获取输出电平信号

6、开漏输出模式

当GPIO引脚配置为开漏输出模式时,通过设置 位设置/清除寄存器或者输出数据寄存器的值,途经N-MOS管,最终输出到I/O端口。这里要注意N-MOS管,当设置输出的值为高电平的时候,N-MOS管处于截止状态,此时I/O端口的电平就不会由输出的高低电平决定,而是由I/O端口外部的上拉或者下拉决定;当设置输出的值为低电平的时候,N-MOS管处于导通状态,此时I/O端口的电平就是低电平。同时,I/O端口的电平也可以通过输入电路进行读取;注意,I/O端口的电平不一定是输出的电平,可通过直接读取该引脚确定输出电平信号GPIO_ReadInputDataBit()

现象体现:

复制代码
当IO引脚配置输出高电平且接上拉电阻时,读该引脚信号一直为高电平信号1,如下图:
复制代码
当IO引脚配置输出高电平且接下拉电阻或不接电平信号时,读该引脚信号一直为低电平信号0,如下图:

IO引脚配置输出低电平时,无论上拉还是下拉,输出信号一直为低电平信号,如下图:

7、复用推挽输出模式

具有推挽模式的特点,但输出源通常由其他外设控制

8、复用开漏输出模式

具有开漏模式的特点,但输出源通常由其他外设控制。

相关推荐
nuannuan2311a28 分钟前
CR03AM-12-ASEMI智能家居专用CR03AM-12
单片机
蓝桥_吹雪2 小时前
【备赛】蓝桥杯实现多个LED联合控制
笔记·stm32·单片机·蓝桥杯
sewinger3 小时前
STM32外部中断EXTI:原理、结构与应用
stm32·单片机·嵌入式硬件·iot
触角010100013 小时前
STM32看门狗原理与应用详解:独立看门狗 vs 窗口看门狗(上) | 零基础入门STM32第九十四步
驱动开发·stm32·单片机·嵌入式硬件·物联网
LaoZhangGong1233 小时前
char表示有符号,还是无符号
经验分享·stm32·单片机·嵌入式硬件
多多*3 小时前
2024第十五届蓝桥杯大赛软件赛省赛Java大学B组 报数游戏 类斐波那契循环数 分布式队列 食堂 最优分组 星际旅行 LITS游戏 拼十字
java·linux·stm32·单片机·嵌入式硬件·spring·eclipse
逆鱼_043 小时前
ARM-UART
linux·运维·arm开发
菜鸟江多多4 小时前
32x32热成像高斯滤波图像处理
图像处理·单片机·算法
sewinger4 小时前
STM32:深入理解定时器与使用定时中断实现精准延时
单片机·嵌入式硬件
charlie1145141916 小时前
STM32F103C8T6单片机开发:简单说说单片机的外部GPIO中断(标准库)
stm32·单片机·嵌入式硬件·学习·教程·中断