[STM32]详解单片机GPIO输入模式配置-上拉下拉与浮空

2023-11-19

前面说到单片机的GPIO主要输出模式主要有推挽模式和开漏模式,除了连接到片内外设的模拟输入模式和复用输入功能以外,这里再说一下通用输入模式配置,STM32单片机的通用输入模式主要有输入浮空、输入上拉与输入下拉。

当配置成上拉模式,即GPIO_Mode_IPU时,IO端口内部通过上拉电阻连接到电源VDD。
当配置成下拉模式,即GPIO_Mode_IPD时,IO端口内部通过下拉电阻连接到电源VSS。
当配置成浮空模式,即GPIO_Mode_IN_FLOATING时,IO端口内部没有连接内部上下拉电阻。
只要时配置成任一输入模式,输出缓冲器将被禁止,IO口上的数据在每个总线时钟周期都会被写入到数据寄存器,此时对数据寄存器的读访问,可以得到IO端口的状态时低还是高。对于什么时候配置成上拉,什么时候配置成下拉,什么时候配置成浮空,要根据具体的电路应用进行选择。
一般,当检测信号发生时,被检测信号接到电源的低电位,如IO口通过按键接到VSS,此时应该配置为上拉模式,按键未按下时,读取IO状态为高电平1,按键按下时,由于外部接到VSS,此时读取IO状态为低电平0,

反之当检测信号发生时,被检测信号接到电源的高电位,如果IO口通过按键接到VDD,此时应该配置为下拉模式。按键未按下时,读取IO状态为低电平0,按键按下时,由于外部接到VDD,此时读取IO状态为高电平1。

但是往往电路设计为了保护IO口,不直接接到VDD或VSS,在外部会增加一些必要的限流电阻来实现与内部上拉下电阻的匹配。对于STM32F103系列单片机,内部上拉下拉电阻阻值典型值40K欧,最大为50K欧。通过电流能力较弱,如果需要提高信号波形爬升即下降速率时,还需要在IO口外面增加强拉电阻,使得时间常数变小,波形变化变快。另外较强的电流能力可以提高系统检测的抗干扰性,防止由于其他因素导致的误判。但是强拉电阻由于电流较大,又会增加系统的功耗,引起发热等问题,一般根据需要进行设计最好。

除了上拉下拉之外,如果外部电路设计已经匹配过相应的电平逻辑电阻,IO模式可以配置成浮空模式,这种模式的输入逻辑电平完全由外部电路决定。但是在一些多IO口总线并联的时候,考虑到IO口不对总线电平进行干扰,往往必须配置成浮空模式。
最后说一下,在单片机低功耗设计时,对于单片机的IO管脚,不用的IO口可以设置成模拟输入,甚至可以关闭一些IO口特殊功能和总线时钟,如:JTAG。可以降低单片机功耗。
上拉输入模式配置:
void IPU_Config(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;



    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);



    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOB, &GPIO_InitStructure);

}
下拉输入模式配置:
void IPD_Config(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;



    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);



    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOB, &GPIO_InitStructure);

}
浮空输入模式配置:
void INFLOATING_Config(void)

{

    GPIO_InitTypeDef GPIO_InitStructure;



    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);



    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_Init(GPIOB, &GPIO_InitStructure);

}


---------------------
作者:forgot
链接:https://bbs.21ic.com/icview-3282498-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。 

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

[STM32]详解单片机GPIO输入模式配置-上拉下拉与浮空 的相关文章

  • router和route的区别

    简单理解为 route是用来获取路由信息的 router是用来操作路由的 一 router router是VueRouter的实例 通过Vue use VueRouter 和VueRouter构造函数得到一个router的实例对象 这个对象
  • List、Queue

    1 ArrayList 底层是基于动态数组的数据结构 是有存放顺序的 2 LinkedList 底层是基于双链表的数据结构 每一个存储单元 都涉及到其他两个引用 优缺点 在执行get set 时 ArrayList的效率高 LinkedLi
  • Matlab产生离散正弦信号即绘制频谱图

    假设正弦信号频率为f0 40000Hz 采样频率fs 160000Hz 注意 fs必须大于2f0 否则采到的点根本不是正弦 实际上 fs 4f0是比较合适的 Matlab程序如下 function y gensinx f0 fs n N f

随机推荐

  • [YOLO专题-27]:YOLO V5 小目标检测遇到的问题与常见解决办法

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 YOLO专题 27 YOLO V5 小目标检测遇到的问题与常见解决办法 文火冰糖 王文兵 的博客 CSDN博客 目录 第1章 前言 第2章
  • freeswitch二、freeswitch之注册,呼叫接听测试

    在上一篇文章中讲解了freeswitch的安装方法 安装完后测试了和数据库的交互 下面就要测试一下freeswitch的功能了 freeswitch测试 freeswitch的conf目录中有20个默认的sip账号 可以直接做简单的测试 其
  • sys用户下为其他用户的创建私有db link的案例

    文章目录 1 查询job执行情况 2 确认根因 3 重建DB LINK 3 1使用current schema方式 3 2使用procedure方式 4 重新编译失效的对象 并手动执行job 记录一下scheduler job执行失败 而不
  • 类型“ScriptManager”的控件“ScriptManager1”必须放在具有 runat=server 的窗体标记内。...

  • 表单提交Post方法、Get方法背后的秘密

    表单大家都很熟悉 上网的时候经常会遇到表单 表单用来接受用户的输入 并将用户的输入以 name value值对 集合的形式提交到服务器进行处理 那么表单是怎样将数据提交到服务器的 服务器是怎样对表单数据进行处理的 下面我将为大家揭开表单提交
  • 数据中台-让数据用起来-6

    文章目录 第六章 数据开发 数据价值提炼工厂 6 1 数据计算能力的4种类型 6 1 1 批计算 6 1 2 流计算 6 1 3 在线查询 6 1 4 即席分析 6 2 离线开发 1 作业调度 2 基线控制 3 异构存储 4 代码校验 5
  • Tomcat 服务器的使用(IDEA 2021.3)

    目录 1 Tomcat 下载和安装 2 IDEA 创建 JavaWeb 项目 3 IDEA 集成 Tomcat 并发布项目 服务器是计算机的一种 它比普通计算机运行更快 负载更高 价格更贵 服务器在网络中为其它客户机 如PC机 智能设备等
  • 精致的动画特效源代码

    动画特效 css简介 代码部分 纯css3云彩动画效果 css3放大镜动画效果 jQuery游戏图片手风琴收缩切换特效 js百叶窗图片3D旋转切换特效 纯CSS3制作飞舞的火箭动画 简单易用的纯CSS3图片墙效果 一个简单好看的纯CSS3翻
  • 【风格迁移系列三】(Adain)Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization 论文解读

    最近看了这篇论文 Arbitrary Style Transfer in Real time with Adaptive Instance Normalization 由于没有详细的博客参考 还是花了一些时间来阅读论文 于是提出自己对论文的
  • 代码随想录算法训练营第一天

    Leetcode704 二分查找 题目链接 关键词 二分查找 循环不变量 区间 问题思路 二分查找的应用 关键在于循环过程中区间的维护 记住循环不变量原则 在这个问题中循环不变量是区间的定义 注意左闭右开和左开右闭的区别 class Sol
  • Apache POI组件操作Excel

    Apache的POI组件是Java操作Microsoft Office办公套件的强大API 其中对Word Excel和PowperPoint都有支持 当然使用较多的还是Excel 因为Word和PowerPoint用程序动态操作的应用较少
  • proto学习

    介绍 protocol buffers 是一种语言无关 平台无关 可扩展的序列化结构数据的方法 它可用于通信协议 数据存储等 protocol buffers的接口 c java python API doc link https deve
  • 用Python画一个生日蛋糕并写上生日祝福对象及生日祝福语

    用Python画一个生日蛋糕并写上生日祝福对象及生日祝福语 画一个双层蛋糕并点上蜡烛 代码运行时间较长 请静待惊喜出现 代码运行截图 完整程序代码 干货主要有 200 多本 Python 电子书 和经典的书籍 应该有 Python标准库资料
  • 掌握 Ajax,第 7 部分: 在请求和响应中使用 XML

    偶尔使用 Ajax 的开发人员也会注意到 Ajax 中的 x 并意识到它代表 XML XML 是编程中最常用的数据格式之一 对于异步应用程序中的服务器响应能够带来切实的好处 在本文中 您将看到服务器如何在请求响应中发送 XML 现在如果不使
  • Java设计模式:装饰者模式(Decorator Pattern)

    装饰者模式 涉及的重要设计原则 类应该对扩展开放 对修改关闭 装饰者模式定义 装饰者模式动态地将责任附加到对象上 若要扩展功能 装饰者提供了比继承更有弹性的替代方案 UML类图 装饰者模式事例 咖啡店 咖啡种类 1 深焙咖啡 DarkRoa
  • Python中如何使用boolean类型的数据

    在写代码的过程中 遇到了定义boolean类型变量的问题 之前一直试图用java或者c定义布尔变量的方法 一直不奏效 经过一旦学习之后才明白 和java竟然只是大小写的问题 在python中将java中的true携程True 将false携
  • Educational Codeforces Round 149 (Rated for Div. 2)A~D

    Grasshopper on a Line 题意 给出n和k 求从0到n最少走几步 以及步长 要求步长不能整除k 思路 从n往下找到 k不等于0的数 输出该数和n 该数即可 如果n k 0 那就只需要一步 代码 gt File Name a
  • 探索Java8——默认方法

    文章目录 什么是默认方法 不断演进的API 初始版本API 第二版API 概述默认方法 什么是默认方法 在传统的Java程序中 实现接口的方式是通过Implements把接口中的每一个方法提供一个实现 或者从父类继承他的实现 然而 在实际开
  • redis搜索 - KEYS命令

    文章目录 KEYS命令 使用 使用场景 KEYS命令 KEYS命令用于搜索匹配某个模式的所有key 例如常见的keys 命令 会返回所有的键 Time complexity O N 使用 KEYS命令支持以下正则匹配模式 h llo mat
  • [STM32]详解单片机GPIO输入模式配置-上拉下拉与浮空

    前面说到单片机的GPIO主要输出模式主要有推挽模式和开漏模式 除了连接到片内外设的模拟输入模式和复用输入功能以外 这里再说一下通用输入模式配置 STM32单片机的通用输入模式主要有输入浮空 输入上拉与输入下拉 当配置成上拉模式 即GPIO