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

一、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.mzph.cn/pingmian/10347.shtml

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

相关文章

Python基础详解四

一,Json解析 字典转换为JSON: import jsondata [{"name":"袁震","age":20},{"name":"张三","age":21},{"name":"李四","age":22}] str json.dumps(data) …

Linux(centos7)系统配置 ntpd服务设置时间同步

一 、应用场景 两台服务器,要求使他们时间同步,有人问为什么要时间同步?如果一个集群中,时间相差很大,那么会出现很多诡异的问题,你也不想在一个无法解决的问题上浪费几天时间吧!总之,设置服务器之间时间同步,为了避免很多问题的发生! ntpd(Network Time Protocol …

【第20章】spring-mvc之定时任务

文章目录 前言一、开启1. 打开开关2. 定时任务类3. 执行结果 二、定时任务线程池1.定义线程池2.开启异步3. 定时任务类4. 执行结果 三、cron总结 前言 定时任务是项目中比较常见的功能,常用于定时发送消息、拉取数据、数据备份等; 为什么要放到SpringM…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (四)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 (四) 大家继续看 https://lilianweng.github.io/posts/2023-06-23-agent/的文档内容 第三部分:工具使用 工具的使用是人类的一个显着而显着的特征。我们创造、修改和利用外部物体来完成超…

开发一款抓大鹅游戏

你抓大鹅第二关过了吗?近期,经常在身边听见这样的疑问。作为本月的爆款游戏,抓大鹅以简单的消消乐玩法、动感的音乐、易上手的操作方式、简单易懂的游戏规则吸引了大量玩家。就像2022年的羊了个羊,2021年的合成大西瓜,但它们确实非…

20240511,谓词,内建函数对象

拜托铠甲勇士真的帅好不好!!! STL案例2-员工分组 10个员工,指派部门,员工信息(姓名,工资组成,部门:策划,美术,研发),随机…

【gpedit.msc】组策略编辑器的安装,针对windows家庭版,没有此功能

创建一个记事本文件然后放入以下内容 echo offpushd "%~dp0"dir /b %systemroot%\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >gp.txtdir /b %systemroot%\servicing\Packages\Microsoft-Windows-GroupPolicy-…

[框架] Unity 公共执行器

本篇我们通过使用单例模式来创建一个公共执行器,使得原本应该在Update()、FixedUpdate()中的指令都可以统一放在一个对象中执行,且可进行添加和移除操作。 1. 创建单例模式改造器:SingletonMono 我们先创建一个单例模式改造器,使…

2024数维杯

截至我所知的信息(2023年),“数维杯”并不是一个广泛认知的赛事名称,至少在主流的学术、教育或科技竞赛领域中没有明确对应的赛事。这可能是指某个特定领域或地区的竞赛,也可能是一个新兴的比赛或者非正式的称谓。 如…

SSM【Spring SpringMVC Mybatis】——Mybatis

目录 1、初识Mybatis 1.1Mybatis简介 1.2 官网地址 2、搭建Mybatis框架 2.1 准备 2.2 搭建Mybatis框架步骤 1. 导入jar包 2. 编写核心配置文件【mybatis-config.xml】 3. 书写相关接口及映射文件 4. 测试【SqlSession】 2.3 添加Log4j日志框架 导入jar包 编写配置文…

ERA5数据的区别

ERA5 hourly data on single levels from 1940 to present 链接 ERA5是欧洲中期天气预报中心(ECMWF)的第五代全球气候和天气再分析产品,涵盖过去80年的数据。数据可从1940年开始获取,ERA5取代了ERA-Interim再分析产品。 再分析将全球范围内的模型数据与…

详解drop,delete,truncate区别

在SQL中,"DROP"、"DELETE"和"TRUNCATE"是用于删除数据的不同命令,它们之间有一些重要的区别: DROP: DROP用于删除数据库对象,例如删除表、视图、索引、触发器等。使用DROP删除的对象将…

27.哀家要长脑子了!---栈与队列

1.739. 每日温度 - 力扣(LeetCode) 用单调栈的方法做: 从左到右遍历数组: 栈中存放的是下标,每个温度在原数组中的下标,从大到小排列,因为这样才能确保的是最近一天的升高温度 如果栈为空&am…

Vue面试经验2

Vue 你说你在vue项目中实现了自定义指令,如何实现 全局指令在main.js入口文件中实现 使用方法:v-指令名称 每个钩子函数都有两个参数(ele,obj) ele:绑定指令的元素 obj:指令的一些信息(比如绑定指令的值&#xff0c…

速盾:如何选择适合自己的网络安全解决方案?

选择适合自己的网络安全解决方案是非常重要的,因为网络安全问题涉及到个人隐私和重要数据的保护。在选择网络安全解决方案时,需要考虑以下几个方面: 网络规模和需求:首先要了解自己的网络规模和需求,包括网络设备的数量…

虚表,虚函数习题

6. 关于虚表说法正确的是(d ) A:一个类只能有一张虚表 多重继承 B:基类中有虚函数,如果子类中没有重写基类的虚函数,此时子类与基类共用同一张虚表 即使子类重写了基类的虚函数,此时子类与…

探索生产者/消费者模式:解决并发编程中的资源竞争

序言 在并发编程中,资源竞争是一个常见的问题。为了有效地管理资源并确保线程安全,需要采用一些有效的方法。其中之一是生产者/消费者模式,它是一种经典的并发设计模式,用于解决生产者和消费者之间的协作问题。本文将深入探讨生产…

Ansible playbook

playbook playbook介绍 playbooks是ansible用于配置,部署,和管理被控节点的剧本。通过playbooks的详细描述,执行其中的tasks,可以让远端主机达到预期的状态。playbooks是由一个或多个”play”组成的列表。 当对一台机器做环境初…

conan2 基础入门(02)-安装

conan2 基础入门(02)-安装 文章目录 conan2 基础入门(02)-安装⭐前言⭐安装python安装安装包安装自行操作 ⭐验证配置环境变量命令行验证conan配置文件 END ⭐前言 Conan 2.0: C and C Open Source Package Manager 官方提供三种安装conan的方式。分别为: Recommen…

MYSQL SQL优化思路和方法

MYSQL SQL优化思路和方法 一、优化SQL的一般步骤1.1 了解各种SQL执行频率1.2 定位执行效率较低SQL1.3 Explain分析低效SQL执行计划1.4 确定问题并采取相应的优化措施 二、索引问题2.1 索引的存储分类2.2 如何使用索引2.2.1 使用索引2.2.2 存在索引但不使用索引2.2.3 查看索引使…