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

news2024/11/16 22:14:52

大家好,我是知微

学习过单片机的小伙伴对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端口模式的介绍到这里就结束了,看完之后是不是对这些概念清晰多了。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

N1912A安捷伦N1912A功率计

181/2461/8938产品概述: 安捷伦N1912A双通道P系列宽带功率传感器为R&D和制造工程师提供精确和可重复的功率测量,应用市场包括航空航天和国防(雷达)、无线通信和无线802.11a/b/g网络。该仪表/传感器组合提供的测量包括峰值功率…

XXLJob中GLUE模式实现在线编写java/shell/python/php/nodejs/powerShell---SpringCloud工作笔记202

1.起因: 之前就一直想实现类似的功能,今天总于找到有可以参考的东西了,这个思路可以帮助实现这种功能. 2.获得灵感 就是:我想实现通过在线编写代码,来扩展我们平台的能力,这样随着业务的扩展,不用我们每次都修改了代码,再去部署,这样就比较麻烦,今天偶尔发现,对于xxljob来说.有…

React 入门

一、官网地址 英文官网: https://reactjs.org/中文官网: https://react.docschina.org/ 二、React 特点 声明式编码组件化编码React Native 编写原生应用高效(优秀的 Diffing 算法)高效的原因:1.使用虚拟DOM,不总是直接操作页面…

从 Redis 开源协议变更到 ES 国产化:一次技术自主的机遇

引言 近日,Redis Labs 宣布其主导的开源项目 Redis 将采用双重源代码可用许可证(RSALv2)和服务器端公共许可证(SSPLv1)。这一重大决策标志着 Redis 从传统的 BSD 许可证向更加严格的控制权转变,同时也引发…

AlexNet网络模型

AlexNet 是一个深度卷积神经网络,由 Alex Krizhevsky、Ilya Sutskever 和 Geoffrey Hinton 在 2012 年的 ImageNet 大规模视觉识别挑战赛(ILSVRC)中首次提出并获得了显著的成功。它是深度学习历史上一个里程碑式的模型,对后来的深…

如何使用PL/SQL Developer工具导出clob字段的表?

1 准备测试数据 导出测试对象:表test_0102,others字段为clob类型 --创建中间表test_0101 create table test_0101( id number, name varchar2(20), others clob);--插入100条测试数据 beginfor i in 1..100 loopinsert into test_0101 values(i,i||_a,l…

文件批量重命名管理,一键将图片的名称进行统一重命名,高效管理文件

在数字时代,我们的生活中充满了各种文件,特别是图片文件。随着时间的推移,我们可能会遇到这样的问题:文件命名不规范,难以快速找到需要的图片。这时,一款强大的文件批量重命名管理工具就显得尤为重要。 首…

JavaScript(一)基础

文章目录 一、JS介绍JavaScript是什么JavaScript书写位置JavaScript的注释输入输出语法字面量 二、变量变量是什么变量基本使用变量的本质变量命名规则与规范变量拓展-数组var与let的区别 三、常量四、数据类型数据类型检测数据类型数据类型转换隐式转换显式转换 简单运算符断点…

git分支-基本分支与合并

问题假设 让我们通过一个简单的分支和合并的例子,演示在实际工作中可能会使用的工作流程。将按照以下步骤进行: 在网站上进行一些工作。为正在开发的新用户故事创建一个分支。在该分支上进行一些工作。 在这个阶段,我们可能会接到一个电话…

LC 144.二叉树的前序遍历

二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入: root [1,null,2,3] 输出:[1,2,3] 示例 2: 输入: root [] 输出:[] 示例 3: 输入&…

2024年 CS2最佳游戏启动项

引言: Counter-Strike 2(CS 2)是一款备受瞩目的游戏,而启动选项则是影响游戏性能和体验的关键因素之一。然而,有关所有选项都应该强制使用的说法并不正确。事实上,大多数选项可能对某些计算机并不适用&…

go 指针和内存分配

定义 了解指针之前,先讲一下什么是变量。 每当我们编写任何程序时,我们都需要在内存中存储一些数据/信息。数据存储在特定地址的存储器中。内存地址看起来像0xAFFFF(这是内存地址的十六进制表示)。 现在,要访问数据…

讲讲你对数据结构-线性表了解多少?

线性表 - 数组和矩阵 当谈到线性表时,数组和矩阵是两种常见的数据结构。 数组(Array): 数组是有序的元素集合,可以通过索引来访问和操作其中的元素。它是最简单、最基本的数据结构之一。数组的特点包括: …

ctf_show笔记篇(web入门---SSRF)

ssrf简介 ssrf产生原理: 服务端存在网络请求功能/函数,例如:file_get_contens()这一类类似于curl这种函数传入的参数用户是可控的没有对用户输入做过滤导致的ssrf漏洞 ssrf利用: 用于探测内网服务以及端口探针存活主机以及开放服务探针是否存…

计算机网络:局域网的数据链路层

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

【2024红明谷】三道Web题目的记录

红明谷 文章目录 红明谷Web1 | SOLVED LaterWeb2 | UNSOLVEDWeb3 | SOLVED 容器已经关咯,所以有些场景只能靠回忆描述啦,学习为主,题目只是一个载体~ 本次比赛学习为主,确实再一次感受到久违的web题目的魅力了,可能也是…

C++实现二叉搜索树的增删查改(非递归玩法)

文章目录 一、二叉搜索树的概念结构和时间复杂度二、二叉搜索树的插入三、二叉搜索树的查找四、二叉搜索树的删除(最麻烦,情况最多,一一分析)3.1首先我们按照一般情况下写,不考虑特殊情况下4.1.1左为空的情况&#xff…

小波降噪基础-python版本

这篇小文将使用小波多分辨分析对一个简单信号进行降噪,主要是降噪流程,为以后的小波更复杂的降噪算法打下良好的基础。降噪算法流程大致如下: (1)去趋势项(如直流电流),并将数据归一…

词向量模型评估

一、既有范式 词向量的语言学特性:这部分主要通过一些具体的指标来评估词向量是否能捕捉到语言的内在规律,包括: 相似度评价指标:检查词向量空间中距离近的词是否与人类直觉一致,例如,利用余弦相似度来评估…

【嵌入式智能产品开发实战】(十三)—— 政安晨:通过ARM-Linux掌握基本技能【运行环境】

目录 简述 开始 操作系统环境下的程序运行 裸机环境下的程序运行 程序入口main()函数分析 BSS段的小提示 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 嵌入式智能产品开发实战 希望政安晨的博客能够对您有所裨益,如有不…