详细了解STM32----GPIO

提示:永远支持免费开源知识文档,喜欢的点个关注吧!谢谢!

文章目录

  • 一、什么是GPIO?
  • 二、GPIO基本结构
  • 三、GPIO的输入输出模式
    • 1、推挽输出
    • 2、开漏输出
    • 3、复用推挽
    • 4、复用开漏
    • 1、浮空输入
    • 2、上拉输入
    • 3、下拉输入
    • 3、模拟输入
  • 总结


一、什么是GPIO?

GPIO是单片机上的通用输入输出端口的简称,可以通过软件来控制其输入输出。STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。

关于芯片引脚的分类:电源管脚、晶振管脚、复位管脚、下载管脚、BOOT管脚、GPIO管脚。

如下图(STM32系统板原理图)中的带P什么的都是STM32的引脚,其中大部分引脚都是用作GPIO,不过也可以用作其它作用,比如说PA9既可以用作GPIO,也可以用作USART1_TX引脚,具体用作什么需要我们后期自己去配置。
在这里插入图片描述

二、GPIO基本结构

如下图是GPIO的内部电路构成:
在这里插入图片描述
没有学过硬件的同学看到这张图也不用担心,王老师带你们看,首先我们从右向左看,最右边是不是有两个二极管,这个是保护二极管,二极管的作用是不是单向导通,那它是怎么起保护作用的呢?我们先来看上面的二极管。

在这里插入图片描述

众所周知,STM32的运行电压一般是3.3V,有些引脚也能接受5V的电压,当然,除了某些AD引脚之外,AD是什么?AD就是我们单片机中的一个模数转换器。现在假设我们输入一个Vc电压,Vc是大于STM32的可接受的电压范围,此时,我们可以发现上面的那个二极管是接了一个VDD的,VDD是什么?VDD是一般外接了一个3.3V的电压,好,看到这里我们怎么去看了呢?别着急,我们可以用整体法,如下图:
在这里插入图片描述
我们可以把这个分为两个部分,第一个是内部的电路,第二个是那个保护二极管,我们可以发现,这两个部分是不是构成了一个并联电路呀?并联电路的特点是什么?电压相等吧,还有分流,此时,当我们输入一个VDD时,1部分的电压就会被2部分的电压拉低,从而起到了一个保护作用。下面的二极管亦是如此。

三、GPIO的输入输出模式

GPIO一共有八种输入输出模式,其中有四种输出模式:推挽输出、开漏输出、复用推挽以及复用开漏,四种输入模式:浮空输入上拉输入、下拉输入以及模拟输入。下面我们来一一介绍一下GPIO的各种模式。

1、推挽输出

在这里插入图片描述
如图黄色部分是推挽输出的电路,我们从左往右看。输出嘛,肯定能输出一个高低电平,但这个是如何在我们写1的时候输出高电平,写0的时候输出一个低电平的呢?
假设我们现在写了一个1,1被输入到输出数据寄存器,然后被输入到了输出控制电路,重点来了,输出控制电路中有一个反相器,什么是反相器?反相器就是当我们写1的时候经过反相器输出的是一个0,当我们写0的时候经过反相器输出的是一个1,好,知道这一点之后我们回到刚刚我们写1。此时经过反相器,两条支路都输出了一个0,好,此时我们又要了解P·MOS管和N·MOS管,其中P·MOS管是低电平导通,N·MOS管是高电平导通,P·MOS管接了一个VDD,上面我们说过,VDD是外接了一个3.3V的电压,此时IO端口连接到P·MOS管,而P·MOS管又连了一个VDD,故此时IO端口就会输出一个高电平,同理我们写0的时候N·MOS管导通,而N·MOS管连接了VSS,而VSS是接地的,所以此时我们IO端口输出一个低电平。

2、开漏输出

在这里插入图片描述
通过上图我们可以发现,开漏输出和推挽输出的电路有所区别,区别就是在开漏输出中,我们的P·MOS管是没有参与开漏输出这整个过程的。所以开漏输出有一个特点,就是不能输出一个高电平,当我们写1的时候开漏输出是没有任何输出的,此时的IO端口状态我们称之为高阻态。

3、复用推挽

在这里插入图片描述
从上图我们可以发现,推挽和复用推挽的区别就在于复用推挽没有经过输出数据寄存器,而是来自片上外设模块,什么是片上外设呢?就是GPIO啊,ADC啊,IIC等等一些ST公司拿到ARM公司给的内核之后往上面添加的一些外设设备。好,知道这些之后,其它的就跟推挽输出差不多了,也能输出一个高低电平。

4、复用开漏

在这里插入图片描述
复用开漏和复用推挽一样,都是来自片上外设模块,而且没有经过输出数据寄存器,其它的也和普通开漏输出模式一样,这里我们也不详细介绍了。

介绍完输出模式之后我们来介绍一下输入模式。

1、浮空输入

在这里插入图片描述
如图黄色部分就是浮空输入的电路了,我们可以从右往左看,输入嘛,也就是外接了一个什么设备,然后IO端口读取这个外设输入进来的高低电平,我们看浮空输入,顾名思义,当我们既没有输入高电平也没有输入低电平的时候,此时IO端口的状态是浮空的,在空闲状态IO端口的电平既不是高电平也不是低电平。
然后这个还经过了一个TTL施密特触发器,众所周知,STM32板子是识别TTL信号的,什么是TTL信号呢?就像是0101这种高低电平的信号,如下图
在这里插入图片描述
我们输入到IO端口的一般是模拟信号,而单片机只识别TTL信号,故我们需要经过一个TTL施密特触发器来将模拟信号转化为TTL信号,然后再输入到输入数据寄存器中

2、上拉输入

在这里插入图片描述
上拉输入和浮空输入的区别就是有一个接了VDD开关的上拉电阻,当我们IO端口没有输入任何高低电平的时候IO端口的默认状态是高电平。

3、下拉输入

在这里插入图片描述
我们可以看到,下拉输入有一个接了VSS开关的下拉电阻,当我们IO端口没有输入任何高低电平的时候IO端口的默认状态就是低电平。

3、模拟输入

在这里插入图片描述
如图,模拟输入和以上三种输入的最大区别就是没有经过TTL施密特触发器,然后直接输入到片上外设模块,这个模式我们一般在用到ADC数据采集的时候会把引脚配置成模拟输入。

总结

GPIO端口一共有八种输入输出模式:
其中输出模式有:
推挽输出,开漏输出,复用推挽,复用开漏
输入模式有:
浮空输入,上拉输入,下拉输入,模拟输入

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

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

相关文章

大模型对数据分布变化的鲁棒性研究综述

摘要: 标准机器学习的一个主要限制是它产生的模型对分布变化不鲁棒,其中训练分布与测试分布不匹配(对于下游任务)。现有的工作表明,调整在广泛的未标记数据上训练的基础模型可以提高适应模型在各种变化中的鲁棒性。这为…

代码序随想录二刷 |二叉树 | 二叉树的层序遍历II

代码序随想录二刷 |二叉树 | 二叉树的层序遍历II 题目描述解题思路代码实现 题目描述 107.二叉树的层序遍历II 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层&#xff0…

pta模拟题——7-34 刮刮彩票

“刮刮彩票”是一款网络游戏里面的一个小游戏。如图所示: 每次游戏玩家会拿到一张彩票,上面会有 9 个数字,分别为数字 1 到数字 9,数字各不重复,并以 33 的“九宫格”形式排布在彩票上。 在游戏开始时能看见一个位置上…

基于JAVA+SpringBoot+Vue的前后端分离的旅游网站

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 近年来,随…

【Vue】设置路由默认跳转指定页面

目录 设置路由默认跳转 上一篇: 登录注册界面制作 https://blog.csdn.net/m0_67930426/article/details/134895214?spm1001.2014.3001.5502 以这篇文章为例 首先我们要了解一下vue项目的router包的作用 上一篇文章里,创建了登录注册页面 如果我们…

14、SQL注入——HTTP文件头注入

文章目录 一、HTTP Header概述1.1 HTTP工作原理1.2 HTTP报文类型1.3 较重要的HTTP Header内容 二、HTTP Header注入2.1 HTTP Header注入的前提条件2.2 常见的HTTP Header注入类型 一、HTTP Header概述 1.1 HTTP工作原理 1.2 HTTP报文类型 (1)请求报文 …

InnoDB Architecture MySQL 5.7 vs 8.0

innodb-architecture-5-7 innodb-architecture-8-0 图片均来源于MySQL官网

wireshark

今天学习一下wireshark的基础命令。 如何筛选所需要的协议:http 剔除不需要的协议:!http 过滤器,逻辑符号,多条件筛选:tcp && http 比较运算符号: 过滤IP地址: 我们可以…

大三上实训内容

项目一:爬取天气预报数据 【内容】 在中国天气网(http://www.weather.com.cn)中输入城市的名称,例如输入信阳,进入http://www.weather.com.cn/weather1d/101180601.shtml#input 的网页显示信阳的天气预报,其中101180601是信阳的…

连接Redis报错解决方案

连接Redis报错&解决方案 问题描述:Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝,无法连接。 问题原因:redis启动方式不正确 解决方案: 在redis根目录下打开命令行窗口,输入命令redi…

合并一个文件夹下的多个txt文件,并对文本内容分列处理。

python 合并一个文件夹下的多个txt文件,并对文本内容分列。 原始文件: 最终结果: import pandas as pd import xlwt import pandas as pd from sqlalchemy import create_engine import pandas as pd import os import glob dirPath g…

《演说之禅》——笔记+原书电子版+禅宗的思维与原则

目录 演说之禅说什么思考以下:设计幻灯片步骤:禅宗的思维与原则 演说之禅说什么 “演说之禅”并非某种方法。方法是重要且必要,但世间并无万能药,方法的背后通常隐含着一个循序渐进的、系统化的过程,一个有准备的、线…

C语言趣练习:两个字符串不用strcmp函数怎么比较大小

目录 1习题一:两个字符串不用strcmp函数怎么比较大小,并输出其差值 2不用strcpy函数将s2字符串中内容复制到s1中 3译密码问题 4总结: 1习题一:两个字符串不用strcmp函数怎么比较大小,并输出其差值 解题思路&#x…

【vue+Swiper】vue中使用swiper缩略图,展示一张大图及n张小图,点击小图切换不同的大图展示,完整代码

效果: 这是在swiper官网上找的示例,swiper太强大了,有非常多不同的示例,有api,有教程,还可以下载示例代码。 但是第一次使用,研究这个缩略图的实现还是花了几个小时,好在实现了。 swiper官网…

docker学习(八、mysql8.2主从复制遇到的问题)

在我配置主从复制的时候,遇到了一直connecting的问题。 起初可能是我ip配置的不对,slave_io_running一直connecting。(我的环境:windows中安装了wsl,是ubuntu环境的,在wsl中装了miniconda,mini…

嵌入式学习---ARM时钟体系

目录 时钟相关概念时钟脉冲时钟频率时钟的作用时钟信号的生成 S3C2440的时钟体系主时钟晶振两个PLL 时钟启动流程相关的寄存器 时钟相关概念 时钟脉冲 按一定电压幅度,一定时间间隔连续发出的脉冲信号。它是一个周期性的信号,每个周期内包含一个上升沿…

【知识】如何区分图论中的点分割和边分割

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 以下两个概念在现有中文博客下非常容易混淆: edge-cut(边切割) vertex-partition(点分割)vertex-cut(点切割) edge-partition(边分割) 实际上,初看中文时,真的会搞不清楚。但…

【wpf】handycontrol growl 打造一个比弹窗优雅10倍的信息通知方式

前言 话不多说,先上图: 这种弹框不会影响主进程的脚本,同时分为四个等级: 普通消息:Info (时间一到,自动消失,除非鼠标停留上面)警告: Warning &#xff0…

基于ssm海鲜自助餐厅系统论文

摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此海鲜餐厅信息的…
最新文章