GPIO基础知识的概括

2023-09-21 08:53:51

GPIO 是通用输入/输出端口的简称,本文以STM32为例进行说明,其他的单片机功能上都是大同小异,学会STM32的GPIO,我们可以触类旁通。

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 内部逻辑图

图片

保护二极管: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

图片

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

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

图片

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

8、复用推挽输出GPIO_Mode_AF_PP

图片

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

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

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

推挽输出和开漏输出

图片

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

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

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

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

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

图片

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

图片

更多推荐

【Ubantu 18.04】配置sh脚本开机启动

一、services服务脚本编写1、进入服务管理目录,创建service文件sudonano/etc/systemd/system/ads.service例如文件名为:ads.service,文件内容如下:[Unit]Description=AdsServiceAfter=network.target[Service]

Git学习笔记10

代码更新方法:蓝绿部署:蓝绿部署,英文名:BlueGreenDeployment,是一种可以保证系统在不间断提供服务的情况下上线代码的部署方式。如何保证系统不间断提供服务呢?蓝绿部署的模型中包含两套集群。在正常情况下(没有上线操作),集群A和集群B的代码版本是一致的,并且同时对外提供服务。在有项目代码上线的时候,我们首

C++ 基本的输入输出

C++基本的输入输出C++标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论C++编程中最基本和最常见的I/O操作。C++的I/O发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网

【PX4】PX4第一个offborad例程

【PX4】PX4第一个offborad例程文章目录【PX4】PX4第一个offborad例程1.什么是OFFBOARD2.第一个offboard例程3.编写launch文件Reference1.什么是OFFBOARDPX4的OFFBOARD指的是外部控制模式,飞行器根据飞行控制栈外部(如机载计算机)提供的设定值控制位置

API安全

1API的简介API代表应用程序编程接口,它由一组允许软件组件进行通信的定义和协议组成。作为软件系统之间的中介,API使软件应用程序或服务能够共享数据和功能。但是API不仅仅提供连接基础,它还管理软件应用程序如何被允许进行通信和交互。API控制程序之间交换请求的类型、请求的方式以及允许的数据格式。例如,智能手机上的天气

小谈设计模式(2)—简单工厂模式

小谈设计模式(2)—简单工厂模式专栏介绍专栏地址专栏介绍简单工厂模式简单工厂模式组成抽象产品(AbstractProduct)具体产品(ConcreteProduct)简单工厂(SimpleFactory)三者关系核心思想Java代码实现首先,我们定义一个抽象产品接口Product,其中包含一个抽象方法use():然后

Redis的缓存、消息队列、计数器应用

目录一、redis的应用场景二、redis如何用于缓存三、redis如何用于消息队列四、redis如何用于计数器一、redis的应用场景Redis在实际应用中有广泛的应用场景,以下是一些常见的Redis应用场景:缓存:Redis可以用作缓存层,将频繁读取的数据存储在内存中,提高数据读取速度,减轻数据库负载。计数器:Re

Vulnhub系列靶机---HarryPotter-Fawkes-哈利波特系列靶机-3

文章目录信息收集主机发现端口扫描dirsearch扫描gobuster扫描漏洞利用缓冲区溢出edb-debugger工具msf-pattern工具docker容器内提权tcpdump流量分析容器外-sudo漏洞提权靶机文档:HarryPotter:Fawkes下载地址:Download(Mirror)难易程度:难上难信

Redis 集合操作实战(全)

目录SADD插入集合SCARD取元素数量SPOP随机移除元素SREM移除多个元素SMOVE移动元素到别的集合SMEMBERS取所有成员SRANDMEMBER取指定数量元素SISMEMBER判断元素是否存在SUNION多集合求并集SUNIONSTORE多集合求并集(存储)SINTER多集合求交集SINTERSTORE多集

PY32F003F18之比较器问题

PY32F003F18的模拟模块,其内部参考电压容易受到电源电压影响。当我连接"USB转串口的RXD"时,PC接收到模拟数据均正常;当我连接“USB转串口的TXD”时,发现内部参考电压的AD值为0xFFF。断开连接的“USB转串口的TXD”,模拟功能模块又恢复正常。于是用万用表测量“USB转串口的TXD”的电压,开路电

Spring高手之路10——解锁Spring组件扫描的新视角

文章目录1.组件扫描路径2.按注解过滤组件(包含)3.按注解过滤组件(排除)4.通过正则表达式过滤组件5.Assignable类型过滤组件6.自定义组件过滤器7.组件扫描的其他特性7.1组合使用组件扫描8.组件扫描的组件名称生成8.1Spring是如何生成默认bean名称的(源码分析)8.2生成默认bean名称的特殊情

热文推荐