GPIO基础知识的概括

2023-10-27

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管,漏极开路输出,叫开漏输出。

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

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

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

图片

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

图片

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GPIO基础知识的概括 的相关文章

随机推荐

  • 统计学习之回归分析

    目录 一 什么是回归分析 二 回归分析有哪些 三 回归分析的应用 四 回归分析常用工具 Python代码实现 五 如何选择合适的回归模型 参考文献 一 什么是回归分析 百度百科 回归分析是一种预测性的建模技术 它研究的是因变量 目标 和自变
  • Linux代码调试----gdb使用介绍

    目录 一 简介 二 gdb使用流程 1 gdb的启动 2 调试中查看源代码 3 开始调试 一 简介 GDB 全称 GNU symbolic debugger 是 Linux 下常用的程序调试器 发展至今 GDB 已经迭代了诸多个版本 当下的
  • 解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver问题(真实有效)

    数据库驱动找不到 这个一场特别奇葩 既然这个异常存在 竟然又能编译通过 项目也不报错 只是在启动的时候 抛出异常 一 看看这个异常 Error starting ApplicationContext To display the condi
  • C++去除字符串中多余的空格

    今天写了个小编程 去除字符串中多余的空格 例如 I am a student 下划线表示空格哈 打多个空格显示的还是一个 最后输出 I am a student 现在把自己的思路贴上 欢迎大家留言指正 思路就是定义两个指针next和tail
  • 2060显卡驱动最新版本_教程:怎么安装更新NVIDIAAMD显卡驱动?

    PART 1 装驱动这么简单的事情真的需要写教程吗 我自己都理解不了我为什么要写这样一个教程 但是如你所见 他确实被我写出来了 而且对大部分人都挺有用 首先 使用鲁大师以及驱动精灵这类软件的同学自己喜欢就好 导致的任何问题也请你们自己解决
  • shell编程 报错 syntax error near unexpected token 最终解决

    刚接触shell编程 问题不断 这个问题有两种情况 第一种是像网上说的那些 因为换行符的问题 其产生的通常情况是你在Windows下编写好的代码 放到linux下运行出错 如果是此种情况 请移步网上方法解决 这里不再赘述 下面说我遇到的第二
  • (Winserver 2019) Hyper-V的安装与使用教程

    一 操作步骤 1 主机开启虚拟化 还需要准备一个大一点的硬盘 2 安装Hyper V服务 3 选择可以使用的网络适配器 4 使用Hyper V工具创建Windows虚拟机 5 输入虚拟机名称 任何名称都可以 5 指定生成虚拟机 在本实验中选
  • 作用域

    作用域 一段程序代码中所用到的名字并不是有效和可用的 而限定这个名字的可用性的代码范围就是这个名字的作用域 作用域的使用提高了程序逻辑的局部性 增强了程序的可靠性 减少了名字冲突 全局作用域 作用于所有代码执行的环境 整个script标签内
  • HyperLPR保姆级安装教程

    文章目录 环境 ubuntu18 04 开源地址 https gitee com zeusees HyperLPR 安装步骤 1 安装pip3 2 安装cmake 3 安装scikit build 4 安装 HyperLPR 5 卸载 op
  • linux下PPTP Server测试环境搭建

    1 1 服务器软件安装 安裝PPTP Server 所需的软件 安装PPTP sudo apt get install pptpd PPTPServer的软件安装很简单 只需要安装pptpd就可以了 1 2 配置 执行命令vi etc pp
  • Delphi 编程技巧常见实例问答

    1 delphi怎样调用外部EXE文件 uses WinProcs begin WinExec end 和调用Pascal库函数没什么两样 2 Delphi hint的字体和色彩如何改变 Delphi中Tapplication的属性有Hin
  • Git学习总结(一)git的安装和配置

    git的安装 在这里 因为网上有了很多详尽的教程 我就不赘述了 git安装教程 然后你需要申请一个GitHub账号 点击申请GitHub账号 申请GitHub账号的时候要绑定一个邮箱 绑定QQ邮箱即可 下面将你电脑上的git绑定GitHub
  • 查看思科路由器各种信息SHOW 命令总结----无私奉献版(转载请注明出处)

    我们用putty连接路由器的控制台 console 看到命令提示符后我们就可以执行命令来查看和配置路由器了 这里总结在路由器上的最常用的show 命令 1 show version 查看路由器的型号 IOS的文件名 路由器接口 内存 以及配
  • Python 分割字符串:split()

    代码案例 gt gt gt txt we trust AI 默认是按照空字符来分割 分割所有 gt gt gt txtlist txt split gt gt gt txtlist we trust AI 指定按照哪个字符来分割 gt gt
  • PageRank 笔记

    PageRank 要说到 PageRank 算法的来源 这个要从搜索引擎的发展讲起 最早的搜索引擎采用的是分类目录的方法 即通过人工进行网页分类并整理出高质量的网站 那时 Yahoo 和国内的 hao123 就是使用这种方法 后来网页越来越
  • java spring cloud 企业电子招标采购系统源码:营造全面规范安全的电子招投标环境,促进招投标市场健康可持续发展

    项目说明 随着公司的快速发展 企业人员和经营规模不断壮大 公司对内部招采管理的提升提出了更高的要求 在企业里建立一个公平 公开 公正的采购环境 最大限度控制采购成本至关重要 符合国家电子招投标法律法规及相关规范 以及审计监督要求 通过电子化
  • 残差连接和跳跃连接

    模型解读 resnet中的残差连接 你确定真的看懂了 腾讯云开发者社区 腾讯云
  • 软件开发模式对比(瀑布、迭代、螺旋、敏捷)

    转自 http www cnblogs com OYK archive 2012 10 08 2714669 html 1 瀑布模型是由W W Royce在1970年最初提出的软件开发模型 瀑布式开发是一种老旧的计算机软件开发方法 瀑布模型
  • js 常见的一些报错问题

    内容可以先不写 对 可以往下操作了
  • GPIO基础知识的概括

    GPIO 是通用输入 输出端口的简称 本文以STM32为例进行说明 其他的单片机功能上都是大同小异 学会STM32的GPIO 我们可以触类旁通 GPIO 的引脚与外部硬件设备连接 可实现与外部通讯 控制外部硬件或者采集外部硬件数据的功能 S