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

embedded/2024/10/18 14:22:50/

一、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/embedded/39783.html

相关文章

手机App防沉迷系统-算法

import java.util.*; public class Main{public static void main(String[] args){Scanner innew Scanner(System.in);int nInteger.parseInt(in.nextLine());//已注册app列表List<Log> listnew ArrayList<>();for(int k0;k<n;k){String[] strin.nextLine().spl…

Linux——mysql运维篇

回顾基本语句&#xff1a; 数据定义语言 ( DDL ) 。这类语言用于定义和修改数据库的结构&#xff0c;包括创建、删除和修改数据库、表、视图和索引等对象。主要的语句关键字包括 CREATE 、 DROP 、 ALTER 、 RENAME 、 TRUNCATE 等。 create database 数据库 &…

Win11安装Docker Desktop运行Oracle 11g 【详细版】

oracle docker版本安装教程 步骤拉取镜像运行镜像进入数据库配置连接数据库&#xff0c;修改密码Navicat连接数据库 步骤 拉取镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g运行镜像 docker run -d -p 1521:1521 --name oracle11g registry.cn-ha…

工业机器人应用实践之玻璃涂胶(篇三)

工业机器人 接上篇文章&#xff0c;浅谈一下实践应用&#xff0c;具体以玻璃涂胶为例&#xff1a; 了解工业机器人在玻璃涂胶领域的应用 认识工具坐标系的标定方法 掌握计时指令的应用 掌握人机交互指令的应用 掌握等待类指令用法&#xff08;WaitDI、WaitUnitl 等&#xff0…

解决springboot项目的网站静态页面显示不全问题

在通过springboot搭建项目时&#xff0c;为了能够访问静态的前端页面&#xff0c;我们考虑到访问的优先级问题&#xff0c;通常选择将资源放在recourses/static的目录下&#xff0c;如下&#xff1a; 这时可能会出现类似于下面这种图片无法加载、没有按照指定位置显示的情况&am…

Linux线程(二)线程互斥

目录 一、为什么需要线程互斥 二、线程互斥的必要性 三、票务问题举例&#xff08;多个线程并发的操作共享变量引发问题&#xff09; 四、互斥锁的用法 1.互斥锁的原理 2、互斥锁的使用 1、初始化互斥锁 2、加锁和解锁 3、销毁互斥锁&#xff08;动态分配时需要&#…

免费开源,无需 GPU,本地化部署大语言模型的对话系统

免费开源&#xff0c;无需 GPU&#xff0c;本地化部署大语言模型的对话系统 分类 编程技术 项目名: FreeAskInternet -- 本地化部署大语言模型的对话系统 Github 开源地址&#xff1a; https://github.com/nashsu/FreeAskInternet FreeAskInternet 是一个免费开源的工具&am…

AI绘画已如此厉害,为何我们仍需学习绘画?

在这个AI技术日新月异的时代&#xff0c;AI绘画能力的大幅提升已经不是什么新鲜事。它们以惊人的速度和惊人的精细度完成作品&#xff0c;让不少人感叹&#xff1a;“这是不是意味着&#xff0c;未来绘画将完全由AI接管&#xff0c;人类的创作将变得无足轻重&#xff1f;”在这…