【STM32零基础入门教程03】GPIO输入输出之GPIO框图分析

news2024/9/20 8:09:10

         本章节主要讲解点亮LED的基本原理,以及GPIO框图的讲解。

  如何点亮LED(输出)

        首先我们查看原理图,观察电路图中LED的连接情况,如下图可以看出我们的板子中LED一端通过限流电阻连接的PB0另一端连接的是高电平VCC,那么我们将PB0位置接地是不是灯就亮了,那我们就想办法在这一端通过单片机让这一端接地就可以了,具体怎么做到我们循序渐进后面一点点慢慢来。(和我使用的板子不一样也没有关系,原理是相通的我们学会原理其他的就不算问题了)。

如何识别按键是否按下(输入)

       如下图所示当我们的开关闭合时单片机IO口引脚处的电压为GND,这样我们就可以通过单片机读取单片机IO的电平状态判断按键是否闭合了,具体怎么使用我们看下文。

  GPIO的基本概念

        通过上面的讲解我们已经知道了如何点亮LED灯,那么我们用单片机如何控制呢?这里需要引入GPIO的概念。

        通常我们管GPIO叫做通用输入输出口,这里的关键词输入输出,我们点亮LED需要用到这个输出功能。我们接下来看下,在STM32单片机中是如何实现的输入输出功能。

        上图是我们在STM32中文参考手册中找到的关于GPIO的框图,需要注意的是这个框图位于芯片内部,图中I/O引脚处表示的是单片机的引脚,这个引脚与芯片外部相连,像我们说的PB0就是一个I/O引脚。

GPIO输入分析

        接下来我们来详细分析这个IO口框图,首先看上半部分,这部分表示的是输入,如下图所示。

                IO口引脚连接一个电压时,电流会按照箭头的方向流动,首先我们看下1处,这里由两个二极管组成,通常情况下在STM32单片机里VDD表示3.3V那么vss就是表示0V。当1处的电压大于3.3V时,比如5V那么二极管这的电压分布情况就如下图所示。

        可以看到二极管正极为5V负极为3.3V,那这里就产生了一个5V减去3.3v的压降,那么二极管就导通了,这高出的电压就被二极管分担了,所以能在一定程度上保护内部电路。下面的保护二极管同理。

        接下来我们像向里走,2处这里经过了两个电阻,一个电阻接VDD叫上拉电阻,一个电阻接VCC叫下拉电阻。两个电阻处都有开和关字样,这就意味着这两个上下拉电阻我们是可以通过软件进行配置的。先看上拉电阻,当上拉电阻开关闭合2处如果没有外部电压输入,那么我们这里就是VDD的电压,这里的作用显而易见(可以在外部没有电平变化的情况下给一个默认的高电平VDD),假如外部IO引脚与地连接,那么这一点的状态可以等效为下图所示。

        现在2处的电平为GND,那么我们在软件里就可以做判断了如果电平为高电平也就是1表示外面没有接低电平,反之为接低电平了(对应文章开始的图表示开关闭合了),那么如果这个上拉电阻不闭合呢?开关闭合能够识别到低电平,但是不闭合时的状态就不确定了,显然不是稳定的。(下拉电阻同样的道理)在这里我们看到了三种输入状态,上拉电阻闭合时叫上拉输入即电平默认状态为高电平,下拉电阻闭合时叫下拉输入即电平默认状态为低电平,如果上拉下拉都不闭合叫做浮空输入即默认电平状态不确定。

        下面我们接着向里走,3处有个电子元器件叫施密特触发器,他的主要作用是做电压比较的,在STM32中当IO引脚处接电压,电压经过保护二极管上下拉电阻到达施密特触发器时如果电压值大于2V,那么施密特触发器输出高电平即输入数据寄存器(4处)(如果不知道寄存器是什么可以百度搜搜,这里不赘述了)会存入一个1,其实就是输入数据寄存器对应位变为了VDD通常情况下为3.3V,那么如果这个电压低于1.8V那么施密特触发器就输出低电平,4处的输入数据寄存器就会存入一个低电平。这时候我们是不是就可以通过读取输入数据寄存器里面的值判断,IO引脚处接的是低电平还是高电平了,文章开始的开关是不是就可以判断有没有闭合了(闭合读到的是低电平)。可能有人注意到了1.8V和2V之间怎么办?这就是一个不确定输入状态了。

          5和6处我们还没有说,这两个比较特殊。先看5处,这里没有经过施密特触发器也就是说,外界输入多少电压就进去多少电压,这叫模拟输入(具体ADC章节会用到),6处经过了施密特触发器也就意味着只有0和1两种状态,这叫复用功能输入,后面会讲这里可以忽略。

GPIO输出框图分析

        好了GPIO的输入框图分析完了,我们可以看下输出了,输出我们从单片机里面向外看,先上图。

        图中0处先不用纠结,后面我们具体学寄存器时再回头看更容易些,先看1到2,这里我们对输出数据寄存器写1之后,1到了3处这是个选择器,选择上下两个线哪一个过去,下面是复用功能输出不用管他,我们假设选了上面的这跟线,这样3处的状态为1高电平状态,这里输出控制里少画了一个元器件,这个元器件叫反相器,即当我们3处为1高电平状态时4处为0低电平状态。这里又遇到了两个电子元器件,PMOS和NMOS,不要害怕这个我们只看4处的高低电平这两个元器件有什么影响就可以了。

        先看上面这个PMOS当a处为低电平时b到c导通就相当于b和c之间有一个开关,a处为低电平时开关闭合,那么VDD也就是3.3V按照红线的方向导通,如果IO引脚处连接一个负极接地的发光二极管是不是发光二极管就亮了。这种情况叫输出高电平。接下来我们看NMOS。

        如图当a处为高电平时b和c导通,相当于b和c之间有一个开关闭合了,这时如果外面接一个发光二极管,二极管正极接了VCC当NMOS处b和c之间的开关闭合,是不是电流就顺着vcc一直流到了vss处,那么灯就亮了。

        我们总结下,当输出数据寄存器写1时经过反相器变为0,这时候PMOS导通IO引脚输出高电平,当输出数据寄存器写0时经过反相器变为1,这时候NMOS导通IO引脚输出低电平。

        文章到这里就结束了,希望对您有所帮助,下章我们分析GPIO相关寄存器,并且使用寄存器点亮LED灯。

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

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

相关文章

30. 利用linprog 解决 生产决策问题(matlab程序)

1.简述 线线规划的几个基本性质:【文献[1]第46页】 (1)线性规划问题的可行域如果非空,则是一个凸集-凸多面体; (2)如果线性规划问题有最优解,那么最优解可在可行域的顶点中确定; (3)如果可行域有界,且可行域…

【数据中台】DataX源码进行二开插件

参考官方 使用的离线数据同步工具/平台&#xff0c;实现不同数据库等各种异构数据源之间高效的数据同步功能 工具部署 https://github.com/alibaba/DataX/blob/master/userGuid.md 拉取下来的代码&#xff0c;pom.xml里面注释 <!--<module>tsdbreader</module&g…

大整数截取解决方法(java代码)

大整数截取解决方法&#xff08;java代码&#xff09; 描述输入描述输出描述输入示例输出示例前置知识&#xff1a;代码 解题思路来自这个博客&#xff1a;简单^不简单 https://blog.csdn.net/younger_china/article/details/126376374 描述 花花有一个很珍贵的数字串&#xf…

P4053 [JSOI2007] 建筑抢修(贪心)(内附封面)

[JSOI2007] 建筑抢修 题目描述 小刚在玩 JSOI 提供的一个称之为“建筑抢修”的电脑游戏&#xff1a;经过了一场激烈的战斗&#xff0c;T 部落消灭了所有 Z 部落的入侵者。但是 T 部落的基地里已经有 N N N 个建筑设施受到了严重的损伤&#xff0c;如果不尽快修复的话&#x…

python项目开发案例集锦,python开发程序流程

大家好&#xff0c;给大家分享一下python项目开发案例集锦 源码&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 今天任务 1.创建Python项目为pythontest1以及test1.py文件 2.修改字号 3.输入九九乘法表程序&#xff0c;编译调试执行 4.配置…

Python selenium对应的浏览器chromedriver版本不一致

1、chrome和chromedriver版本不一致导致的&#xff0c;我们只需要升级下chromedriver的版本即可 浏览器版本查看 //打开google浏览器直接访问&#xff0c;查看浏览器版本 chrome://version/ 查看chromedriver的版本 //查看驱动版本 chromedriver chromedriver下载 可看到浏…

基于 Debian GNU/Linux 12 “书虫 “的Neptune 8.0 “Juna “来了

导读Neptune Linux 发行版背后的团队发布了 Neptune 8.0&#xff0c;作为这个基于 Debian 的 GNU/Linux 发行版的重大更新&#xff0c;它围绕最新的 KDE Plasma 桌面环境构建。 Neptune 8.0 被命名为 “Juna”&#xff0c;是在Neptune 7.5 发布 11 个月后发布的&#xff0c;也是…

2.1 密码学基础

数据参考&#xff1a;CISP官方 目录 密码学基本概念对称密码算法非对称密码算法哈希函数与数字签名公钥基础设施 一、密码学基本概念 1、密码学形成与发展 发展历程 古典密码学 (1949年之前) 主要特点&#xff1a;数据的安全基于算法的保密 近代密码学 (1949~1975年…

第4章 案例研究:JavaScript图片库

案例 html部分 <h1 id"title">图片1</h1> <ul><li><!-- onclick绑定点击事件&#xff0c;this为触发dom&#xff0c;return false阻止默认行为 --><a onclick"show_img(this); return false" title"图片1" h…

数字信号处理中的基本运算——乘法运算

一、二进制乘法原理 二进制乘法可分为&#xff1a;无符号乘法和有符号乘法 整个相乘过程可分解为一系列的移位、相加操作。 有符号数乘法可分为&#xff1a;&#xff08;1&#xff09;正数*正数&#xff1b;&#xff08;2&#xff09;正数*负数&#xff1b;&#xff08;3&…

申请软件著作权都有什么好处?

随着社会的发展&#xff0c;知识产权保护意识对于公司而言尤为重要&#xff0c;对自己的权利进行最大限度的保护&#xff0c;以防止被别有用心的人侵权。那么&#xff0c;申请软著的好处到底是什么?软著有什么用呢? 无形资产软著是一种无形的知识产权&#xff0c;是开发者智慧…

(常压)室温超导体:The First Room-Temperature Ambient-Pressure Superconductor

2023年7月23日&#xff0c;一支韩国的研究团队声称他们已经成功研制出了一种在室温和常压下的超导体&#xff0c;名为LK-99。这一发现在科学界引起了广泛的关注和讨论。 然而&#xff0c;这项研究的结果也引起了一些科学家的怀疑。有些人对数据的真实性表示了疑虑&#xff0c;认…

【UEC++学习】UE网络 - Replication、RPC

1. UE网络架构 &#xff08;1&#xff09;UE的网络架构是SC&#xff08;Server - Client&#xff09;的模式&#xff0c;这种模式的优势&#xff1a;这种模式让所有客户端都在服务器端进行安全验证&#xff0c;这样可以有效的防止客户端上的作弊问题。 &#xff08;2&#xff…

【编程范式】聊聊什么是数据类型和范式的本质

什么是编程范式 范式其实就是做事的方式&#xff0c;编程范式可以理解为如何编程&#xff0c;按照什么样的模式或者风格进行编程。 编程范式包含哪些 泛型编程函数式编程面向对象编程编程本质和逻辑编程 虽然有不同的编程范式&#xff0c;但是对于目的来说都是为了解决同一…

关于vs下多态虚表中存储的地址和实际成员函数地址不一样的原因

以如下代码为例&#xff1a; class Base1 { public: virtual void func1() { cout << "Base1::func1" << endl; } virtual void func2() { cout << "Base1::func2" << endl; } private: int b1; }; class Base2 { public: virtual…

BES 平台 SDK之LED的配置

本文章是基于BES2700 芯片&#xff0c;其他BESxxx 芯片可做参考&#xff0c;如有不当之处&#xff0c;欢迎评论区留言指出。仅供参考学习用&#xff01; BES 平台 SDK之代码架构讲解二_谢文浩的博客-CSDN博客 关于SDK 系统框架简介可参考上一篇文章。链接如上所示&#xff01…

学python需要下载什么软件,自学python需要安装什么

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;学python需要安装一些什么软件好&#xff0c;学python需要安装一些什么软件&#xff0c;今天让我们一起来看看吧&#xff01; 工欲善其事必先利其器。初学者在学Python的时候&#xff0c;往往会因为没有好用的软件工具&…

2.5 BUMP图改进

一、Bump Mapping介绍 凹凸贴图映射技术是对物体表面贴图进行变化然后进行光计算的一种技术。例如给法线分量添加噪音&#xff0c;或者在一个保护扰动值的纹理图中进行查找。这是一个提升物理真实感的有效方法&#xff0c;但却不需要额外的提升物体的几何复杂度。这种法式在提…

华为OD机试真题 Java 实现【简单的自动曝光】【2023Q1 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、备注五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明4、再输入5、输出6、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff…

【雕爷学编程】Arduino动手做(173)---SG90舵机双轴云台模块2

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…