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

相关文章

在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的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介  1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置,启动方式也不方便需要配置BOOT引脚触发启动  4 IAP(自己写的Bootloader,实现程序升级) 1 比如蓝牙转串口,

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者