详细了解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.mzph.cn/news/210627.shtml

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

相关文章

FastAPI之嵌套模型

请求体 - 嵌套模型 使用 FastAPI,你可以很随意的实现模型的嵌套、定义、校验、记录文档,并使用任意深度嵌套的模型,这其实都是FastAPI的核心模块P一单提成进行做的。。 List 字段 from fastapi import FastAPI from pydantic import BaseM…

基于JavaWeb+SSM+Vue童装商城小程序系统的设计和实现

基于JavaWebSSMVue童装商城小程序系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 目 录 摘 要 III Abstract 1 1 系统概述 2 1.1 概述 3 1.2课题意义 4 1.3 主要内容 5…

BearPi Std 板从入门到放弃 - 先天篇(1)(阶段 : 智慧城市 - 智慧路灯)

简介 对前面几篇整合, 做个小小汇总试验, 使用BearPi E53_SC1扩展板主芯片: STM32L431RCT6串口: Usart1扩展板与主板连接: I2C : I2C1 (光照强度传感器:BH1750)LED: PB9步骤 创建项目 参考 BearPi Std 板从入门到放弃 - 引气入体篇(1)(由零创…

浅谈Google Play ASO 优化

什么是ASO ASO即APP Store Optimization,是用于提高APP在应用市场排名的工具,其实也就是移动产品的SEO工作。 ASO是为了提高该产品的搜索结果成绩,提升APP的下载量,针对Google Play来说,ASO就是优化APP页面。 为什么…

Linux升级nginx版本

处于漏洞修复目的服务器所用nginx是1.16.0版本扫出来存在安全隐患,需要我们升级到1.17.7以上。 一般nginx默认在 /usr/local/ 目录,这里我的nginx是自定义的路径安装在 /app/weblogic/nginx 。 1.查看生产环境nginx版本 cd /app/weblogic/nginx/sbin/…

Redis基础入门

第1章:引言 大家好!我是小黑,今天咱们来聊聊Redis。Redis,这个名字你可能在不少地方听过,尤其是在后端开发领域,它可是个大名鼎鼎的角色。,Redis是一个开源的内存中数据结构存储系统&#xff0…

放弃原生SQL:Python中更优雅的数据库操作

概要 在Python中,通过原生SQL语句进行数据库操作是一种传统的方式,但现代的Python开发中,使用ORM(Object-Relational Mapping)工具和数据库连接库可以更加高效和优雅地进行增删改查操作。本文将详细介绍Python中放弃原…

解决IDEA中多个项目不在同一窗口下显示的问题和添加新的git的URL

以上是添加显示多个项目 以下是给新添加的项目添加git

LeetCode算法题解(单调栈)|LeetCode84. 柱状图中最大的矩形

一、LeetCode84. 柱状图中最大的矩形 题目链接:84. 柱状图中最大的矩形 题目描述: 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大…

做外贸很多时候还是要学会随机应变

马上又要到年底了,相信已经有一部分小伙伴开启了催单模式,希望客户尽量在春节前将订单落实下来,自然也有很多客户会在春节前的这一段时间开始陆续拜访自己观望了很久的工厂。 其实对于贸易公司来说,对于来看工厂的客户&#xff0…

ChatGPT,作为一种强大的自然语言处理模型,具备显著优势,能够帮助您在各个领域取得突破

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

Kotlin:内置函数let、also、with、run、apply

前言 在Kotlin中,有一些用于扩展 & 方便开发者编码的内置函数,能大大提高开发者的开发效率。今天,我将主要讲解的是: let函数also函数with函数run函数apply函数 基础知识:接口回调中Lambda使用 在Kotlin中可使用…

栈和队列的互相实现

用队列实现栈 OJ链接 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。int pop() 移除并返…

Mybatis XML增删操作(结合上文)

先来"增"操作 在UserInfoXMLMapper.xml里面写 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <…

nginx多端口部署

1.配置nginx.conf文件 有几个端口需要部署就写几个server&#xff0c;我这里只部署了两个端口分别为80和81端口&#xff0c;所以有两个server文件。80端口项目入口在根目录的test文件中&#xff0c;81端口项目入口在根目录的test1文件夹中。 2.准备项目文件html文件 在/test1…

Dockerfile部署Java项目挂载使用外部配置文件

Dockerfile部署Java项目挂载使用外部配置文件 技术博客 http://idea.coderyj.com/ 需求是由于java项目使用的是nacos 而且每次部署nacos服务器ip不一样导致要重新打包,想引入外部配置文件进行打包 1.需求是由于java项目使用的是nacos 而且每次部署nacos服务器ip不一样导致要重新…

【论文阅读笔记】序列数据的数据增强方法综述

【论文阅读笔记】序列数据的数据增强方法综述 摘要 这篇论文探讨了在深度学习模型中由于对精度的要求不断提高导致模型框架结构变得更加复杂和深层的趋势。随着模型参数量的增加&#xff0c;训练模型需要更多的数据&#xff0c;但人工标注数据的成本高昂&#xff0c;且由于客观…

将RK3399的挖掘机开发板在Android10下设置系统默认为24小时制

将RK3399的挖掘机开发板在Android10下设置系统默认为24小时制 2023/12/9 22:07 应该也可以适用于RK3399的Android12系统 --- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml -2…

MagicAnimate

简介 新加坡国立大学 Show 实验室和字节联合做了一项类似的研究。他们提出了一个基于扩散的框架 MagicAnimate&#xff0c;旨在增强时间一致性、忠实地保留参考图像并提升动画保真度。并且&#xff0c;MagicAnimate 项目是开源的&#xff0c;目前推理代码和 gradio 在线 demo …

外包干了三年,我承认我确实废了……

没错&#xff0c;我也干过外包&#xff0c;一干就是三年&#xff0c;三年后&#xff0c;我废了…… 虽说废的不是很彻底&#xff0c;但那三年我几乎是出差了三年、玩了三年、荒废了三年&#xff0c;那三年&#xff0c;我的技术能力几乎是零成长的。 说起这段三年的外包经历&a…