不到2000字,轻松带你搞懂STM32中GPIO的8种工作模式

大家好,我是知微

学习过单片机的小伙伴对GPIO肯定不陌生,GPIO (general purpose input output)是通用输入输出端口的简称,通俗来讲就是单片机上的引脚。

在STM32中,GPIO的工作模式被细分为8种,对于初学者来讲,要理解它们可太难了!

诶诶诶,给个机会,先别急着退出哈!

这不是有我在呢,跟着这篇文章学习,保证你几分钟时间就能轻松掌握这8种工作模式。

那么,好戏开始咯!

输入输出

首先,我们先要知道一个概念,GPIO的输入输出都是相对于MCU(单片机)来说的。

  • MCU给引脚信号,称之为输出
  • MCU接收引脚给过来的信号,则叫做输入。

知道这个之后,我们就可以进行下一步了,先从输出说起。

四种输出模式

1、 推挽输出

我第一次听到推挽这个词的时候,一脸懵逼,啥玩意儿啊!其实看英文反而好理解,push-pull,也就是推拉的意思。

这个叫做推

这个叫做挽

  • 推挽输出模式下,GPIO可以输出高电平,也可以输出低电平。

  • 输出高电平时,P-MOS导通,电流按下图箭头所示流出去,称之为,把电流推出去。

  • 输出低电平时,N-MOS导通,电流按下图箭头所示流进来,称之为,把电流挽回来。

应用场景:适用于通用的数字输出场景,如点亮LED灯

2、开漏输出

这又是一个不好理解的词,开漏,是不是什么东西开了,然后漏出来了?

其实不是这样的,是开路的意思。开路表示电路中存在一个断链,电流无法从一个点流到另一个点。

那么肯定有小伙伴会有疑问,开路和断路有啥区别?

这里简单说明一下:

  • 开路表示电路中不存在电流流动;

  • 断路表示电路中某一部分不通过电流流动,但是电路中仍然存在其他电流流动的路径

好了,话题不扯远了,继续说开漏中的漏。

我们知道,MOS管的三个极分别是栅极(G)、源极(S)和漏极(D)。这里的就是MOS三个极中的漏极。

  • 开漏输出模式下,GPIO可以输出低电平,也可以输出高阻态。在此模式下,P-MOS始终处于关断状态

  • 当输出控制器将P-MOS关断、N-MOS导通时,此时输出接VSS,输出低电平

  • 当输出控制器将P-MOS关断、N-MOS关断时,相当于什么都没接,此时输出浮空,相对于其它点的电阻无穷大,呈现高阻态,可以理解为开路

应用场景:适用于多个设备共享同一信号线,如I2C通信协议

3、复用推挽输出

  • 和推挽输出同理,只不过此时的输出控制器由片上外设控制

应用场景:允许GPIO引脚用于微控制器的特定功能,如SPI、I2C、USART等接口,同时保持推挽输出的特性

4、复用开漏输出

  • 和开漏输出同理,只不过此时的输出控制器由片上外设控制

应用场景:适用于复用功能接口,且需要多设备共享通讯总线(如I2C)的场景

四种输入模式

1、上拉输入

你可以把输入驱动器框中,跟VDD和VSS连接的电阻,想象成两个弹簧。

当VDD的开关闭合时,上拉电阻接通VDD,此时弹簧向上拉。

可以读取I/O引脚状态,默认为高电平。

应用场景:常用于矩阵键盘或按钮输入

2、下拉输入

当VSS的开关闭合时,下拉电阻接通VSS,此时弹簧向下拉。

可以读取I/O引脚状态,默认为低电平。

应用场景:如按钮开关连接到地时的检测

3、浮空输入

当VDD和VSS的开关都断开时,此时弹簧既不向上拉,也不向下拉,处于一种悬空的状态。

浮空输入状态下,读取该端口的电平是不确定的。

应用场景:常用于接收来自开关、键盘或其他数字接口的信号

4、模拟输入

从图示可以看到,之前的3种模式,输入的信号都经过了TTL施密特触发器,把缓慢变化的模拟信号转换成阶段变化的数字信号。而这种模式,信号没有经过施密特触发器,直接接到片上外设。

相较于其他输入模式只能读取到逻辑高/低电平(数字量),该模式能读取到细微变化的值(模拟量)。

通俗来讲就是,别的模式只能读取0和1,而模拟输入可以读取到0-1的变化区间。

主要应用:读取来自传感器(如温度传感器、电位计)的模拟信号

好了,STM32的8种GPIO端口模式的介绍到这里就结束了,看完之后是不是对这些概念清晰多了。

📢欢迎各位 👍点赞 ⭐收藏 📝评论,如有错误请留言指正,非常感谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/516706.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

gitcode 配置 SSH 公钥

在 gitcode 上配置SSH公钥后,可以通过SSH协议安全地访问远程仓库,无需每次都输入用户名和密码。以下是配置SSH公钥的步骤: 5分钟解决方案 用 OpenSSH公钥生成器 生成 公钥和私钥,私钥文件(id_rsa)下载&am…

算法设计与分析实验报告python实现(排序算法、三壶谜题、交替放置的碟子、带锁的门)

一、 实验目的 1.加深学生对算法设计方法的基本思想、基本步骤、基本方法的理解与掌握; 2.提高学生利用课堂所学知识解决实际问题的能力; 3.提高学生综合应用所学知识解决实际问题的能力。 二、实验任务 1、排序算法…

python中如何使用help()

help()函数帮助我们了解模块、类型、对象、方法、属性的详细信息。 1、帮助查看类型详细信息,包含类的创建方式、属性、方法 >>> help(list) Help on class list in module builtins: class list(object)| list() -> new empty list| list(iterable)…

EmpireCMS:帝国源码cms网站搬家/数据迁移方法教程

帝国cms迁移数据,从一台旧的服务器把网站文件都搬迁到新的服务器,会涉及到附件,数据库信息等,很多人在搬迁的时候也会遇到各种问题,下面是小编整理的关于如何搬迁帝国cms数据的解决方案和思路,方便新手站长…

957: 逆置单链表

学习版 【C语言】 #include<iostream> using namespace std; typedef struct LNode {char data;struct LNode* next;LNode(char x) :data(x), next(nullptr) {} }LNode; void creatlist(LNode *&L) {int n;char e;cin >> n;LNode* p1, * p2;p1 L;for (int i…

Kubernetes的基础概念

目录 一、概述 二、为什么要用Kubernetes 2.1 从技术层面分析 2.1.1 问题解答 2.1.2 Docker等“裸容器”的不足 2.1.2.1 宕机无法自动恢复 2.1.2.2 健康检查不到位 2.1.2.3 部署、回滚、扩容问题 2.1.2.4 运维难 2.1.3 总结 2.2 从开发人员层面分析 2.2.1 分析日志 …

关于首助编辑高手

首助编辑高手是一款专为现代办公场景设计的集合软件&#xff0c;致力于提升用户的办公效率和便利性。它集成了多种实用的办公辅助工具&#xff0c;包括但不限于文档编辑、图片处理、PDF编辑、文本批量操作等功能&#xff0c;帮助用户轻松应对各种办公挑战。 首助编辑高手主要功…

ChatGPT 在做什么,为什么有效?

原文&#xff1a;What Is ChatGPT Doing … and Why Does It Work? 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 序言 这本简短的书试图从第一原理解释 ChatGPT 是如何工作的。在某种程度上&#xff0c;这是关于技术的故事。但它也是关于科学的故事。以及关于哲学…

【RISC-V 指令集】RISC-V 向量V扩展指令集介绍(五)- 向量加载和存储

1. 引言 以下是《riscv-v-spec-1.0.pdf》文档的关键内容&#xff1a; 这是一份关于向量扩展的详细技术文档&#xff0c;内容覆盖了向量指令集的多个关键方面&#xff0c;如向量寄存器状态映射、向量指令格式、向量加载和存储操作、向量内存对齐约束、向量内存一致性模型、向量…

七大开源基金会联合制定符合 CRA 法案的共同标准

欧洲议会上个月通过的《欧洲网络弹性法案》(CRA) 制定通用规范和标准 Apache 软件基金会、Blender 基金会、Eclipse 基金会、OpenSSL 软件基金会、PHP 基金会、Python 软件基金会 和 Rust 基金会 这项工作由 Eclipse 基金会牵头&#xff0c;旨在建立基于现有开源最佳实践的安全…

我认识的Git-Git工作流

WorkFlow 的字面意思&#xff0c;工作流&#xff0c;即工作流程。工作流不涉及任何命令&#xff0c;因为它就是一个规则&#xff0c;完全由开发者自定义&#xff0c;并且自遵守。 集中式工作流 集中式工作流以中央仓库作为项目所有修改的单点实体。相比svn缺省的开发分支trunk…

canvas+javascript 实现贪吃蛇游戏

引言 在当今数字化时代&#xff0c;编程已经成为一种极具创造力和趣味性的活动。通过编写代码&#xff0c;我们可以创造出各种各样的应用程序和游戏&#xff0c;其中包括经典的贪吃蛇游戏。本文将向您介绍如何使用 JavaScript 编程语言制作一个简单而有趣的贪吃蛇游戏&#xf…

韩顺平Java | C23 反射Reflection

需求&#xff1a;通过外部文件配置&#xff0c;在不修改源码情况下控制程序&#xff08;符合设计模式ocp开闭原则&#xff1a;不修改源码的情况下扩容功能&#xff09; ※反射机制 反射机制允许程序在执行期间借助于ReflectioAPI取得任何类的内部信息&#xff08;如成员变量&…

数据仓库的建立

实验 目的 熟悉Linux系统、MySQL、Hadoop、HBase、Hive、Sqoop、R、Eclipse等系统和软件的安装和使用&#xff1b; 了解大数据处理的基本流程&#xff1b; 熟悉数据预处理方法&#xff1b; 熟悉在不同类型数据库之间进行数据相互导入导出&#xff1b; 熟悉使用R语言进行可视化…

Windows虚拟主机如何创建数据库和导入数据库

看到有网友咨询想要知道Windows虚拟主机上如何使用数据库,由于是新手&#xff0c;对于主Plesk面板使用不是很了解,想要知道如何使用数据库&#xff0c;这边了解到他当前使用的是Hostease 的Windows 虚拟主机&#xff0c;首先&#xff0c;登录你的Plesk面板&#xff0c;这里有一…

【简单讲解下Tauri】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

QA测试开发工程师面试题满分问答5: 内存溢出和内存泄漏问题

概念阐述 内存溢出&#xff08;Memory Overflow&#xff09;和内存泄漏&#xff08;Memory Leak&#xff09;是与计算机程序中的内存管理相关的问题&#xff0c;它们描述了不同的情况。 内存溢出是指程序在申请内存时&#xff0c;要求的内存超出了系统所能提供的可用内存资源…

树(Tree) - 概念与基础

树的基本概念 树(Tree)是一种重要的数据结构&#xff0c;它在计算机科学中被广泛应用于各种算法和程序中。树是由节点(node)组成的层次结构&#xff0c;其中每个节点都有一个父节点&#xff0c;除了根节点外&#xff0c;每个节点都有零个或多个子节点。树的一个关键特点是没有…

Deep Unsupervised Learning using Nonequilibrium Thermodynamics

就直接从算法部分开始了&#xff1a; 2 算法 我们的目标是定义一个前向&#xff08;或者推理&#xff09;扩散过程&#xff0c;这个过程能够转换任意的复杂数据分部到一个简单、tractable、分布&#xff0c;并且学习有限时间扩散过程的反转 从而 定义我们的生成模型分布。我们…

SpringBoot整合Flowable/Activiti

SpringBoot版本: 2.0.1.RELEASE Flowable版本: 6.3.1 Activiti版本: 6.0.0 一.添加pom依赖 因为之前我整合的时候有报错关于sqlsession的错误,后面查询文章才发现flowable要排除掉mybatis,又没说具体排除哪一个,所以我这干脆全部排除了 <!-- Flowable dependencies -->…