单片机中GPIO八种工作模式详细分析

简介: 单片机中GPIO八种工作模式详细分析

今天给大家讲解一下 GPIO 基础,参考资料:

STM32F1xx 官方资料:

STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO)

d80c2882af66bf0e9573024b1500fa87.png

GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。


STM32的八种GPIO口模式

1) GPIO_Mode_AIN 模拟输入;
2) GPIO_Mode_IN_FLOATING 浮空输入;
3) GPIO_Mode_IPD 下拉输入;
4) GPIO_Mode_IPU 上拉输入;
5) GPIO_Mode_Out_OD 开漏输出;
6) GPIO_Mode_Out_PP 推挽输出;
7) GPIO_Mode_AF_OD 复用开漏输出;
8) GPIO_Mode_AF_PP 复用推挽输出。


STM32 普通 GPIO 内部逻辑图

dc14811e0ffe31f63fe563c17eefbb47.png

保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。也叫钳位二极管。

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

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

查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;如果没有标注“FT”,就代表着不兼容5V。比如STM32F103VET6的GPIOE口那一组全部兼容5V,其他组是部分兼容5V。

备注:导通路径为黄色部分。

1、模拟输入 GPIO_Mode_AIN

7d23d65f436cac1704c9a762f1846cb5.png

此模式可以检测外部输入的模拟电压,可以检测电压值,只要不高于Vcc即可。


2、浮空输入 GPIO_MODE_IN_FLOATING

cbeadc436c3b5f3a02c1edbb5d8f3e77.png

此模式最常用的是检测按键,可以接收高低电平。但容易被干扰。


3、下拉输入GPIO_Mode_IPD

d6d187670df2c7a706829809b817f47f.png

此模式检测到电平默认为低,可以检测到由低到高的电平变化。


4、上拉输入GPIO_Mode_IPU

22d20376115c8fb02d0acef66d94ad14.png

此模式检测到电平默认为高,可以检测到由高到低的电平变化。


5、开漏输出GPIO_Mode_Out_OD

61e6f3669cf21727364e33af854aad7b.png

开漏输出用于输出低电平,高电平靠外部上拉电阻电压决定,适用于快速切换电压的外部电路结构。


6、推挽输出GPIO_Mode_Out_PP

4d2d2a8662a3dd3e82e42e182c137286.png

推挽输出用于输出高低电平,是最常用的模式。


7、复用开漏输出GPIO_Mode_AF_OD

4f442da5faccf6cc84ced21b442e90af.png

复用 IIC 时候选择复用开漏输出,因为开漏输出可以“线与”。


8、复用推挽输出GPIO_Mode_AF_PP

52fff730371c41d7d2ff4e8261a9c18b.png

其他复用比如 SPI 等可以选择复用推挽输出。


什么是推挽结构和推挽电路?

推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。

推挽输出和开漏输出

065461aaefd8ce849795419575dd20c0.jpg

左侧为推挽输出,可以输出高低电平。右侧为开漏输出,只能输出低电平,高电平靠外部上拉电阻决定。

图中所示为三极管,也可以叫开集输出(集电极开路输出),开漏输出是当这个管子为MOS管,漏极开路输出,叫开漏输出。

推挽输出:上面三级管导通,输出高电平,下面三极管导通,输出低电平。

开漏输出:三极管导通输出低电平,三极管截止是高阻态,电平由外部上拉电阻决定。

推挽输出高电平(向负载推流):

80d5c24308adc22fd9f20e8814d795ed.png

推挽输出低电平(从负载拉流):

527cbcb5b959fe8d376f53bdd395df91.png

目录
相关文章
STM32F0单片机快速入门五 GPIO中断
STM32F0单片机快速入门五 GPIO中断
|
C语言
简单的C语言宏定义结合全局变量的方法实现单片机串口实现透传模式
简单的C语言宏定义结合全局变量的方法实现单片机串口实现透传模式
97 0
|
存储 调度
51单片机--定时器与按键控制流水灯模式
51单片机--定时器与按键控制流水灯模式
460 0
|
存储 芯片 UED
【STM32】单片机模式配置&FlyMcu串口下载固件&STLINK Utility
【STM32】单片机模式配置&FlyMcu串口下载固件&STLINK Utility
570 0
|
芯片
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(3)
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(3)
717 0
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(3)
|
算法 芯片 计算机视觉
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(2)
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(2)
125 0
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(2)
|
芯片
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(1)
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(1)
230 0
【全栈计划 —— 单片机】——Part_03 使用放大电路或拓展芯片解决GPIO的输出电流不足够支持驱动设备的问题(1)
|
监控
SST单片机的IAP与softicE两种模式的区别
单片机在IAP模式下无法进行在线仿真,通过使用IAP软件将softice监控程序下载到单片机后就会将单片机从IAP模式转换为softiCE模式,这样就可以进行在线仿真功能了,也就是可以通过keil进行仿真。
936 0
|
6月前
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
57 1