当前位置: 首页 > ai >正文

STM32外设-GPIO输入(仅数字)

STM32外设-GPIO输入

  • 一,输入的三种类型
    • 1. 上拉 (Pull-up)输入
    • 2. 下拉 (Pull-down)输入
    • 3. 浮空 (Floating / High-Impedance)输入
  • 二,下拉电阻的作用

学完基础的led,接下来学习key即按键,但在连接按键之前,我们必须了解单片机 GPIO (通用输入/输出) 引脚作为输入时,有三种模式:上拉 (Pull-up)、下拉 (Pull-down) 和 浮空 (Floating)。它们决定了引脚在没有明确外部信号时(比如按键没按下)的默认电平状态,这对于稳定读取按键至关重要。

一,输入的三种类型

1. 上拉 (Pull-up)输入

它是啥? 想象引脚内部有一根"橡皮筋"轻轻地把它往"高电平"(通常是电源 VCC)拉。当没有更强的力量(比如按键按下接地)作用时,它就保持在高电平。
为啥用? 防止引脚"悬空"乱飘。就像一个开关,默认是开着的,只有你按下时才关断。
何时用? 当你需要引脚在空闲时稳定地输出高电平,或者连接的按键按下时会把引脚拉到低电平 (GND)。这是最常见的按键连接方式之一。

2. 下拉 (Pull-down)输入

它是啥? 和上拉相反,这次"橡皮筋"是把引脚往"低电平"(地线 GND)拉。默认状态是低电平。
为啥用? 同样是为了防止悬空,提供一个明确的默认状态。
何时用? 当你需要引脚空闲时稳定在低电平,或者连接的按键按下时会把引脚接到高电平 (VCC)。相对上拉来说,用得稍微少一些。

3. 浮空 (Floating / High-Impedance)输入

它是啥? 引脚内部既不上拉也不下拉,像个与世无争的"隐士"。它的电平完全由外部连接决定。如果什么都没接,它的状态就像空气中的羽毛,极其不稳定,容易受到各种电磁干扰。
为啥用? 有些特定场景需要引脚呈现高阻态,不影响外部电路(比如模拟信号输入,或者需要外部电路精确控制电平)。但在简单的数字输入,尤其是按键检测中,极少使用浮空模式,因为它太容易"受惊"了。

注意! 直接用浮空模式连接按键通常是不可靠的,你需要外部电路(比如外部上拉或下拉电阻)来明确默认电平。
正确选择和配置输入模式是按键能够被可靠读取的前提。对于大多数简单的按键电路,使用单片机内部的上拉或下拉功能是最方便有效的方式。

二,下拉电阻的作用

  1. 在引脚输入时,默认引脚为低电平
    输入引脚内部为施密特触发器,这里用三极管代替
    在这里插入图片描述
    P点处为高阻态,电平漂浮不定
    在这里插入图片描述
    当加上一个下拉电阻时,NP结阻抗无穷大,输入引脚为低电平
    在这里插入图片描述
    如果不加下拉电阻直接接地,也可以保证输入引脚为低电平,但是如果我想将输入引脚默认为高电平时,如下图,因为电压有内阻,内阻分得5V电压,输入引脚依旧为低电平
    在这里插入图片描述
    所以这里下拉电阻还有一个作用是:保证输入引脚可以为高电平

下拉电阻的作用:
1,将输入引脚钳位在低电平
2,保证输入引脚可以为高电平

http://www.xdnf.cn/news/3806.html

相关文章:

  • [GESP202503 四级] 二阶矩阵c++
  • Spring AI 实战:第八章、Spring AI Tool Calling之与时俱进
  • Android Framework学习三:zygote剖析
  • 轻量化定时工具!Pt 极简界面 :定时备份 + 循环灵活关机
  • 基于springboot3+mybatis整合,使用mybatisPlus插件自动完成简单的 增删改查操作
  • LeetCode 热题 100 189. 轮转数组
  • 多语言笔记系列:Polyglot Notebooks 混合使用多语言并共享变量
  • 第三节:OpenCV 基础入门-安装与配置 OpenCV (Python/C++ 环境)
  • LeetCode 1128.等价多米诺骨牌对的数量:计数
  • 大连理工大学选修课——图形学:第五章 二维变换及二维观察
  • 多语言笔记系列:Polyglot Notebooks 多种使用方式
  • [2025]MySQL的事务机制是什么样的?redolog,undolog、binog三种日志的区别?二阶段提交是什么?ACID怎么保证的?主从复制的过程?
  • JVM happens-before 原则有哪些?
  • 利用KMP找出模式串在目标串中所有匹配位置的起始下标
  • 【25软考网工】第五章(4)ARP和RARP
  • 【Touching China】2007-2011
  • Go语言--语法基础4--基本数据类型--类型转换
  • MPI,Pthreads和OpenMP等并行实验环境配置
  • 【第三十四周】多模态大模型调研
  • Uni-app 组件使用
  • 什么是Linux中的systemd?
  • leetcode 59. 螺旋矩阵 II
  • 小土堆pytorch--tensorboard的使用
  • 【c++深入系列】:万字详解vector(附模拟实现的vector源码)
  • Spring MVC的工作流程, DispatcherServlet 的工作流程
  • 25.1linux中外置RTC芯片的PCF8563实验(知识)_csdn
  • 嵌入式GPIO 实验(流水灯程序,八段数码管显示程序)
  • Kubernetes 安装 kubectl
  • Qt实现 hello world + 内存泄漏(5)
  • C++学习:六个月从基础到就业——C++11/14:lambda表达式