GPIO基础知识的概括

news2025/4/12 19:08:15

GPIO 是通用输入/输出端口的简称,本文以STM32为例进行说明,其他的单片机功能上都是大同小异,学会STM32的GPIO,我们可以触类旁通。

GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。

STM32的八种GPIO口模式

1) GPIO_Mode_AIN 模拟输入;
2) GPIO_Mode_IN_FLOATING 浮空输入;
3) GPIO_Mode_IPD 下拉输入;
4) GPIO_Mode_IPU 上拉输入;

5) GPIO_Mode_Out_OD 开漏输出;
6) GPIO_Mode_Out_PP 推挽输出;
7) GPIO_Mode_AF_OD 复用开漏输出;
8) GPIO_Mode_AF_PP 复用推挽输出。

STM32 普通 GPIO 内部逻辑图

图片

保护二极管:IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。

当引脚电压高于VDD时,上方的二极管导通;当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。也叫钳位二极管。

P-MOS管和N-MOS管

由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。

TTL肖特基触发器

信号经过触发器后,模拟信号转化为0和1的数字信号。但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。(可以理解为一个比较器,大于某个值是1,小于某个值是0)

查看《STM32中文参考手册V10》中的GPIO的表格时,会看到有“FT”一列,这代表着这个GPIO口时兼容3.3V和5V的;

如果没有标注“FT”,就代表着不兼容5V。比如STM32F103VET6的GPIOE口那一组全部兼容5V,其他组是部分兼容5V。

备注:导通路径为黄色部分。

1、模拟输入 GPIO_Mode_AIN

图片

此模式可以检测外部输入的模拟电压,可以检测电压值,只要不高于Vcc即可。

2、浮空输入 GPIO_MODE_IN_FLOATING

图片

此模式最常用的是检测按键,可以接收高低电平。但容易被干扰。

3、下拉输入GPIO_Mode_IPD

图片

此模式检测到电平默认为低,可以检测到由低到高的电平变化。

4、上拉输入GPIO_Mode_IPU

图片

此模式检测到电平默认为高,可以检测到由高到低的电平变化。

5、开漏输出GPIO_Mode_Out_OD

图片

开漏输出用于输出低电平,高电平靠外部上拉电阻电压决定,适用于快速切换电压的外部电路结构。

6、推挽输出GPIO_Mode_Out_PP

图片

推挽输出用于输出高低电平,是最常用的模式

7、复用开漏输出GPIO_Mode_AF_OD

图片

复用 IIC 时候选择复用开漏输出,因为开漏输出可以“线与”。

8、复用推挽输出GPIO_Mode_AF_PP

图片

其他复用比如 SPI 等可以选择复用推挽输出。

什么是推挽结构和推挽电路?

推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。

推挽输出和开漏输出

图片

左侧为推挽输出,可以输出高低电平。右侧为开漏输出,只能输出低电平,高电平靠外部上拉电阻决定。

图中所示为三极管,也可以叫开集输出(集电极开路输出),开漏输出是当这个管子为MOS管,漏极开路输出,叫开漏输出。

推挽输出:上面三级管导通,输出高电平,下面三极管导通,输出低电平。

开漏输出:三极管导通输出低电平,三极管截止是高阻态,电平由外部上拉电阻决定。

推挽输出高电平(向负载推流):

图片

推挽输出低电平(从负载拉流):

图片

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

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

相关文章

CMS之织梦导航二级下拉菜单

操作步骤 1、首先&#xff1a; 将下面这段代码贴到templets\default\footer.htm文件里&#xff08;只要在此文件里就行&#xff0c;位置无所谓啦&#xff01;自己看着办&#xff01;&#xff09; <!-- //二级子类下拉菜单&#xff0c;考虑SEO原因放置于底部 --><scr…

最大限度节省采购成本的七种方法

当前经济环境下&#xff0c;降低成本比以往任何时候都更受到企业的重视。降低成本通常是指在采购过程中节省的成本&#xff0c;但其实远不止于此。它还包括通过重新谈判合同条款和条件、改进管理和运营流程&#xff0c;以及数据和技术的智能使用而节省的成本。 节省采购成本的…

提升技术招聘有效性| 杜绝候选人刷题应试

企业在技术人员招聘中&#xff0c;时常出现候选人“笔试考高分&#xff0c;工作写Bug&#xff0c;绩效来垫底”的尴尬窘境&#xff0c;让企业倍感煎熬。不仅浪费时间精力、也增大招人的成本投入。 如何招到真正合适的技术人选&#xff0c;成为摆在企业心头的难题。 合适的技术…

Vue中的生命周期钩子

生命周期钩子 :::warning 注意 所有生命周期钩子的 this 上下文将自动绑定至实例中&#xff0c;因此你可以利用 this 访问 props、data、computed 和 methods 等选项内的数据/函数。这意味着你不应该使用箭头函数来定义一个生命周期方法&#xff0c;因为箭头函数中没有 this&a…

基于Kintex UltraScale系列FPGA KU060/KU115高性能PCIe数据预处理载板(5GByte/s带宽)

PCIE702是一款基于PCIE总线架构的高性能数据预处理FMC载板&#xff0c;板卡具有1个FMC&#xff08;HPC&#xff09;接口&#xff0c;1路PCIe x8主机接口、1个RJ45千兆以太网口、2个QSFP 40G光纤接口。板卡采用Xilinx的高性能Kintex UltraScale系列FPGA作为实时处理器&#xff0…

vuex实现简易购物车加购效果

目录 一、加购效果动图二、前提条件三、开始操作四、解决vuex刷新数据丢失问题五、最终效果 一、加购效果动图 二、前提条件 创建了vue项目&#xff0c;安装了vuex 三、开始操作 目录结构如下&#xff1a; main.js文件中引入store: import Vue from vue import App from ./…

星戈瑞Cyanine7-COOH在生物学和医学中的应用 CY7-COOH

Cyanine7-COOH作为一种近红外荧光染料&#xff0c;在生物学和医学领域应用。以下是一些Cyanine7-COOH在这些领域中可能的应用&#xff1a; 生物荧光成像&#xff1a; Cyanine7-COOH可以用于细胞和组织的荧光成像&#xff0c;特别是在近红外范围内。这个波长范围的荧光信号穿透…

分布式链路追踪系统zipkin【杭州多测师_王sir】

一、部署zipkin环境的方式 》1.docker 2、java -jar 3、运行源码 二、分别可以在Linux系统和Windows系统里面运行zipkin 三、在地址栏输入&#xff1a;http://127.0.0.1:9411 四、zipkin的流程图 由上图可以看出&#xff0c;应用的代码(User Code)发起 Http Get 请求(请…

Unity丨移动相机朝向目标并确定目标在摄像机可视范围内丨摄像机注释模型丨摄像机移动丨不同尺寸模型优化丨

文章目录 问题描述功能展示技术细节小结 问题描述 本文提供的功能是摄像机朝向目标移动&#xff0c;并确定整个目标出现在摄像机视角内&#xff0c;针对不同尺寸的模型优化。 功能展示 提示&#xff1a;这里可以添加技术名词解释 技术细节 直接上代码 using UnityEngine;…

阿里云产品试用系列-函数计算 FC

函数计算&#xff08;Function Compute&#xff09;是一个事件驱动的全托管 Serverless 计算服务&#xff0c;您无需管理服务器等基础设施&#xff0c;只需编写代码并上传&#xff0c;函数计算会为您准备好计算资源&#xff0c;并以弹性、可靠的方式运行您的代码。 如上所示&am…

Selenium 4.11 正式发布--再也不用手动更新chrome driver 了

Selenium 4.11.0 正式发布了&#xff0c;先来看一下主要特性。 Chrome DevTools支持的版本现在是&#xff1a;v113、v114和v115&#xff08;Firefox仍然对所有版本使用v85&#xff09; 通过Selenium Manager支持Chrome For Testing&#xff08;CfT&#xff09; Selenium Manag…

网络基础 (深信服)

一 走进网络世界 1.1.1 企业网络环境介绍 计算机网络类型&#xff1a; LAN ------本地局域网 Local Area Network&#xff1a; •通常指几千米以内的&#xff0c;可通过某种介质互联的计算机、打印机、modem或其他设备的集合 WAN ------ 广 域 网 Wide Area Network&am…

ClickHouse分布式集群部署

目录 ​编辑 一、环境说明 二、安装部署 2.1 RPM方式安装 2.1.1 安装yum-utils 2.1.2 配置yum repo源 2.1.3 yum install 下载安装clickhouse 2.2 信息配置 2.2.1 配置外网可访问地址 2.2.2 修改存储路径 2.2.2.1 新建存储目录 2.2.2.2 授权 2.2.2.3 修改配置 2.…

Tomcat的启动问题

今天去打开Tomcat的时候没反应 如下 按之前是到Tomcat目录下的bin目录下的startup.bat文件&#xff0c;双击&#xff0c;就可以启动Tomcat服务器。启动后可以 打开浏览器&#xff0c;在浏览器地址栏中输入以下地址测试&#xff1a; 1、http://localhost:8080 2、http://127.…

手撕 LFU 缓存

大家好&#xff0c;我是 方圆。LFU 的缩写是 Least Frequently Used&#xff0c;简单理解则是将使用最少的元素移除&#xff0c;如果存在多个使用次数最小的元素&#xff0c;那么则需要移除最近不被使用的元素。LFU 缓存在 LeetCode 上是一道困难的题目&#xff0c;实现起来并不…

Fair下发产物-布局DSL生成原理

一、概述 大家都知道,Flutter在release环境是以AOT模式运行的,这就决定了我们要做动态化的话无法简单的通过动态下发dart代码执行的。根据Fair团队的前期调研,我们对布局动态化和逻辑动态化的实现采用了两套不同的实现方案,对于布局部分,我们在解析dart源文件之后生成DSL…

xterm使用

xterm使用 前言1. xterm介绍2. xterm使用2.1 xterm简单示例2.2 xterm监听输入并在终端中实时显示方式1:onKey监听方式2:onData监听onData和onKey什么区别 2.3 xterm与vue整合2.3 xterm vue websocket 附录配置说明 前言 vue与xterm整合记录 1. xterm介绍 xterm 是一个基于…

jvm深入研究文档--java中的堆--详解!--jvm底层探索(1)

阿丹&#xff1a; JVM的内存分区包括以下几个部分&#xff1a; 堆区&#xff08;Heap&#xff09; - 这是JVM的主要部分&#xff0c;用于存储实例对象和大多数Java对象&#xff0c;如数组和用户定义的类。方法区&#xff08;Method Area&#xff09; - 这是线程私有的&#x…

内网穿透的应用-NAS私有云存储 - 搭建Nextcloud私有云盘并公网远程访问

文章目录 摘要1. 环境搭建2. 测试局域网访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问 4 配置固定http公网地址4.1 保留一个二级子域名4.1 配置固定二级子域名4.3 测试访问公网固定二级子域名 摘要 Nextcloud,它是ownCloud的一个分支,是一个文件共享服…

利用fiddler正向代理前端请求到本地后端

前景&#xff1a;在实际开发测试环境中&#xff0c;&#xff08;前后端均已上线到测试服务器或前端以上线而后端还在开发中)。在测试过程中&#xff08;前端页面点击&#xff0c;功能测试&#xff09;发现了bug或异常点。 正常排查问题可能是先利用浏览器检查工具查看接口的返回…