【江科大STM32学习笔记】GPIO输出

ops/2024/10/22 12:35:23/

一、GPIO简介

1.GPIO(General Purpose Input/Output)通用输入输出

2.可配置为8种输入输出模式

3.引脚电平:0V~3.3V,部分引脚可容忍5V

部分引脚输入可为5V但输出只能是3.3V

4.输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等

5.输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

二、GPIO基本结构

GPIO(General Purpose Input/Output,通用输入输出)是微控制器与外部电路交互的基础接口。其基本结构通常包括以下几个部分:

  • 保护二极管:防止因外部电压过高或过低而对微控制器造成损害。
  • 上拉和下拉电阻:提供引脚的稳定状态,上拉电阻将引脚拉向高电平,下拉电阻将引脚拉向低电平。
  • P-MOS管和N-MOS管:用于驱动引脚的电平。
  • 数据寄存器:包括输入数据寄存器和输出数据寄存器,分别用于存储引脚的输入和输出数据。
  • 复用功能:某些GPIO口可以被配置为特定的外设功能,如串行通信接口等。

三、GPIO位结构 

GPIO位结构是构成通用输入输出接口的基本单元,它决定了引脚的功能和行为。以下是一些关于GPIO位结构的详细解释:

  • 保护二极管:用于防止因外部电压过高或过低而对微控制器造成损害。一个连接到VDD(供电电压),另一个连接到VSS(接地电压)。
  • 上拉和下拉电阻:提供引脚的稳定状态,上拉电阻将引脚拉向高电平,下拉电阻将引脚拉向低电平。
  • 施密特触发器:用于提高信号的稳定性,确保输入信号在边缘处清晰无噪声。
  • 输入数据寄存器:保存当前引脚的状态,无论是作为输入还是输出。
  • 位设置/清除寄存器:允许单独设置或清除每个位的状态,从而提供了灵活控制单个引脚的能力。
  • 输出数据寄存器:存储即将输出到对应引脚的数据。
  • P-MOS和N-MOS:分别连接VDD和VSS的金属氧化物半导体场效应晶体管,用于驱动引脚的电平。
  • 数据选择器:决定是将输入数据还是输出数据发送到引脚。

四、GPIO模式 

GPIO(General Purpose Input/Output)是微控制器中用于与外部设备通信的通用输入输出端口。其模式主要可以分为以下几种:

  • 浮空输入模式:这种模式下,GPIO端口不会给引脚提供上拉或下拉电阻,引脚的状态完全由外部电路决定。
  • 带上拉输入模式:在带上拉输入模式下,GPIO端口会通过一个上拉电阻连接到电源,使得引脚在没有外部信号输入时保持高电平状态。
  • 带下拉输入模式:与带上拉输入模式相反,带下拉输入模式通过下拉电阻将引脚连接到地,使得引脚在无外部信号输入时保持低电平状态。
  • 模拟输入模式:此模式下,GPIO端口被配置为模拟信号输入,通常用于读取模拟电压值。
  • 开漏输出模式:在开漏输出模式下,GPIO端口通过一个NMOS晶体管连接到地,当引脚需要输出低电平时,NMOS导通;而当需要输出高电平时,NMOS关闭,引脚悬空,需要外部上拉电阻来提供高电平。
  • 推挽输出模式:推挽输出模式下,GPIO端口通过一个PMOS和一个NMOS晶体管分别连接到电源和地,可以直接输出高电平和低电平,不需要外部电阻。
  • 复用功能推挽输出:除了作为通用IO口外,还可以作为特定外设功能的推挽输出,如串行通信接口等。
  • 复用功能开漏输出:与复用功能推挽输出类似,但是以开漏形式输出,需要外部上拉电阻来完成高电平的输出。

http://www.ppmy.cn/ops/39838.html

相关文章

机器学习:葡萄酒品质预测

说明,此项目是我的期末大作业,包括了对数据集探索,预处理以及分类的各个详细过程与描述,代码简单,主要是一个分类项目的流程,并没有对模型进行深度研究,因此我写在这里。 目录 一、问题介绍 …

高通和联发科高端芯片涨价,旧款芯片改名再上市,收割中国手机

中国手机这几年连连涨价让国内消费者吐槽不断,不过有分析机构指出中国手机其实是无奈,因为掌控手机芯片市场的高通和联发科正在不断涨价,似乎他们在涨价方面已达成默契。 分析机构指出2023年高通和联发科的高端芯片涨价幅度达近100美元&#…

杨钰莹领域模型-UMLChina建模知识竞赛第5赛季第11轮(无人答对换题重发)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 参考潘加宇在《软件方法》和UMLChina公众号文章中发表的内容作答。在本文下留言回答。 只要最先答对前3题,即可获得本轮优胜。 如果有第4题,第4题为附加题&am…

Flutter连接websocket、实现在线聊天功能

老规矩效果图: 第一步:引入 web_socket_channel: ^2.4.0 第二步:封装 websocket.dart 单例 import dart:async; import dart:convert; import package:web_socket_channel/web_socket_channel.dart; import package:web_socket_channel/io…

golang中变量交换的2种方式

变量的交换在我们对数据进行排序时是必须要用到的技术, 今天就给大家介绍2种go语言中交换变量的方式。 1. 使用传统方式定义一个中间变量来进行变量的交换 // 文件名 demo1.go package demo01import "fmt"func ExampleDemo02() {//常规方式进行变量交换…

域基础-NTLM协议

简介 NTLM(New Technology LAN Manager)协议是微软用于Windows身份验证的主要协议之一。继SMB、LM协议之后微软提出了NTLM协议,这一协议安全性更高,不仅可以用于工作组中的机器身份验证,又可以用于域环境身份验证,还可以为SMB、H…

2024最新从0部署Django项目(nginx+uwsgi+mysql)

云服务器 我这里用的是腾讯云免费试用的2H4Gcentos服务器(后升级为2H8G,保险一点提高内存) 因为网上很多关于django部属的教程都是宝塔啊,python版本控制器啊这种的,我也误打误撞安装了宝塔面板,但这里我…

https://是怎么实现的?

默认的网站建设好后都是http访问模式,这种模式对于纯内容类型的网站来说,没有什么问题,但如果受到中间网络劫持会让网站轻易的跳转钓鱼网站,为避免这种情况下发生,所以传统的网站改为https协议,这种协议自己…