STM32八种I/O口模式

2024-04-01 00:12
文章标签 模式 stm32 八种

本文主要是介绍STM32八种I/O口模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

STM32八种I/O口模式

文章目录

  • STM32八种I/O口模式
  • 前言
  • 一、stm32八种I/O类型
  • 二、区别
    • 1.模拟输入
    • 2.浮空输入
    • 3.上拉输入
    • 4.下拉输入
    • 5.推挽输出
    • 6.开漏输出
    • 7.复用推挽输出
    • 8.复用推挽输出
  • 总结


前言

作为两年嵌入式软件攻城狮,还没仔细去理解过STM32的GPIO的八种使用模式,俗话说嵌入式软硬件不分家,软件不懂硬件,出了问题有时候只能“抓虾”,今天有点时间,特此总结一下学过的有关STM32的GPIO模式的硬件知识。


一、stm32八种I/O类型

GPIO(general porpose intputoutput):通用输入输出端口的简称,在STM32中,对于 GPIO 的配置种类有以下 8 种之多,接触最多的就是开漏输出、上拉输入、推挽输出

类型模式
GPIO_Mode_AIN模拟输入
GPIO_Mode_IN_FLOATING浮空输入
GPIO_Mode_IPD下拉输入
GPIO_Mode_IPU上拉输入
GPIO_Mode_Out_OD开漏输出
GPIO_Mode_Out_PP推挽输出
GPIO_Mode_AF_OD复用开漏输出
GPIO_Mode_AF_PP复用推挽输出

二、区别

1.模拟输入

模拟输入顾名思义就是对模拟信号的读取IO,关于什么是模拟信号此处不再赘述,在STM32给出的5 V 容忍 I/O 端口位的基本结构图中,模拟输入的路径如图红线所示。例如在单片机使用用AD采集电压信号时候,需将IO配置为模拟输入模式,为让单片机真实的读取到电压信号,该模式下既不开启上下拉,也不经过施密特触发器。在这里插入图片描述

2.浮空输入

浮空输入从字面意思理解就是IO口是悬浮滞空状态的,的在STM32给出的5 V 容忍 I/O 端口位的基本结构图中,浮空输入的路径如图红线所示需要走的路径如图所示。VDD和VSS两个开关同时断开,此时没有上拉和下拉的情况,我理解为浮空输入状态下, IO 的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。
优势:此模式下,IO电平会完全取决于外部电路而与内部电路无关,所以常用作对开关按键的读取。
在这里插入图片描述
注意:上拉和下拉电阻电路的开关在实际应用中一般使用MOS管来代替开关来提到。再往前面走,就是走到了TTL施密特触发器这一个部分。我们知道,由于电源的特性,或者是由于外部开关输入的特性,输入的数字信号,极有可能会出现脉冲等噪声的影响,为了让我们的波形更好看,或者信号更加清晰,所以就设置了TTL施密特触发器这个东西。经过之后,我们就会把这个数字信息存储在输入数据寄存器中。这样我们就读到了IO过来的数字信号

3.上拉输入

上拉输入首先是对一个数字信号的读取,其次就是在IO口增加有上拉电阻,在STM32给出的5 V 容忍 I/O 端口位的基本结构图中,上拉输入的路径如图红线所示,此时右侧绿框中上拉电阻接入,红框中下拉电阻断开。
IO此时的电平就是VDD的电平,此时读到的电平为高电平。如果输入了一个高电平,VDD和左侧I/O引脚的电势差为0,I/O口输入或不输入高电平,读取到的电平数据都是高电平,所以不太容易确定有没有电平输入。输入一个低电平时,此时左侧I/O引脚的电平的电平就会变成低电平与VDD形成了电势差,因为有上拉电阻所以不会出现大电流,但此时可以读取到一个低电平。
所以在上拉输入,容易读取低电平但不容易读取高电平
在这里插入图片描述
注意:上拉输入的好处就是输入的电平不会上下浮动而导致输入信号不稳定,在没有信号输入的情况下可以稳定在高电平。

4.下拉输入

下拉输入与上拉输入原理一样,只不过带的是下拉电阻,在STM32给出的5 V 容忍 I/O 端口位的基本结构图中,下拉输入的路径如图红线所示,此时右侧绿框中下拉电阻接入,红框中上拉电阻断开。
IO此时的电平就是VSS的电平,此时读到的电平为低电平。如果输入了一个低电平,VSS和左侧I/O引脚的电势差为0,I/O口输入或不输入低电平,读取到的电平数据都是低电平,到此可以知道和上拉输入是截然相反的。所以在下拉输入,容易读取高电平但不容易读取低电平。唯一的好处就是使得把输入钳在一个明确的低电平,电平信号不会浮动而导致输入信号不稳定。
在这里插入图片描述

5.推挽输出

推挽输出就是利用如图两个不同的MOS管(P-MOS和N-MOS)来实现输出电平,通过PMOS和NMOS通断组合会出现两种情况:
N-MOS导通,P-MOS截至,此时IO口接通在VSS(如图绿色路径),此时输出的是低电平,俗称“灌电流”。
N-MOS截至,P-MOS导通,此时IO口接通在VDD(如图红色路径),此时输出的是高电平,俗称“拉电流”。
另外两种情况暂且不论,感兴趣可参见博文:推挽输出与开漏输出
因为有VDD和VSS,所以输出具有电平反转效率高,电流驱动能力强。

在这里插入图片描述

6.开漏输出

所谓的开漏,如图,我们假设没有PMOS的存在,此时类似于我们直接将IO接到N-MOS的漏极,此时N-MOS的通断有两种状态
1.NMOS导通,相当于外接到VSS,为低电平
2.NMOS截至,类似接无穷大电阻,为高阻态,
这两种情况下在外部加一个上拉电阻(绿框),外部IO就会出现两种情况:
1.NMOS导通,相当上拉电阻一端外接到VSS,外部IO被短路,输出为低电平
2.NMOS截至,相当于将短路部分断开,上拉电阻将外部IO拉高,输出高电平
特点:IO电压不再由内部VDD决定,而是由上拉电阻决定,可以通过上拉电阻部分给定想要的电压,并且可以进行“线与”

更多的开漏和推挽相关的知识参见博文:推挽输出与开漏输出

在这里插入图片描述

7.复用推挽输出

复用推挽就是如果你不想用单片机内部来输出,那么你可以通进行复用,将输出转移到其他外设上面,更改需要开启复用功能和时钟
在这里插入图片描述

8.复用推挽输出

复用开漏就是如果你不想用单片机内部来输出,那么你可以通进行复用,将输出转移到其他外设上面,更改需要开启复用功能和时钟
在这里插入图片描述

总结

另外关于GPIO的速率(2MHz,10MHz,50MHz),很多人认为这个速率就是GPIO的信号输出速率,其实不然,这个速率只是GPIO的硬件响应速率,可以理解为高低电平反转的速率,并不是信号输出速率,信号输出速率受软件影响。

这篇关于STM32八种I/O口模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/865730

相关文章

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序