关于STM32按键实验中连接按键的GPIO管脚是配置为上拉输入还是下拉输入的理解

2023-11-02

关于STM32按键实验中连接按键的GPIO管脚是配置为上拉输入还是下拉输入的理解:

以正点原子按键输入实验为例:

(1)按键KEY0<——>PE4  按键另一端接GND

(2)按键KEY1<——>PE3  按键另一端接GND

(3)按键WK_UP<——>PA0 按键另一端接VCC

  个人理解:

         首先上下拉的目的是给IO口设定一个默认的状态,比如按键控制使能的话,如果按键按下是高电平有效的话,我们就下拉,让该IO口在默认状态下处于低电平(即没有按键按下时IO口检测到的总是低电平,只有按键按下的时候IO口才会检测到高电平);如果按键按下是低电平有效的话,我们就上拉,让该IO口在默认状态下处于高电平(即没有按键按下时IO口检测到的总是高电平,只有按键按下的时候IO口才会检测到低电平)。

        有点绕,简化理解:就是让GPIO输入脚在没有输入信号的情况下能够有确定的电平信号被我们知道,上拉就是高电平(因为上拉输入是芯片内部有个电阻一端连接的是VCC,下拉就是低电平(因为下拉输入是芯片内部有个电阻一端连接的是GND)。

        比如我们这里的KEY0/KEY1按键,在没有被按下的时候,因为一端连接的是GND且是断开的,另一端所连接的GPIO管脚要配置成默认状态下检测到的是高电平信号(只有按键按下检测到的才是低电平信号,即低电平有效),所以按键初始化时相关IO要配置成上拉输入;而WK_UP按键,在没有被按下的时候,因为一端连接的是VCC且是断开的,另一端所连接的GPIO管脚要配置成默认状态下检测到的是低电平信号(只有按键按下检测到的才是高电平信号,即高电平有效),所以按键初始化时相关IO要配置成下拉输入。

        再简化:上拉输入就是指在IO口上(芯片内部)串一个电阻到vcc,正常情况IO监测到的是高电平,适用于外部接GND的按键输入;下拉输入是指在IO口上(芯片内部)串一个电阻到GND,正常情况IO监测到的是低电平,适用于外部接VCC的按键输入。(实在还不理解,记住会用也行)

        知识点补充:

       (1)上拉就是将不确定的信号通过一个一端连接VCC的电阻钳位在高电平,电阻同时起限流作用。

       (2)下拉就是将不确定的信号通过一个一端连接GND的电阻钳位在低电平。 

       (3)一般作单键触发使用时,如果IC本身没有内接电阻,为了使单键维持在不被触发的状态或是触发后回到原状态,必须在IC外部另接一电阻。
       (4)数字电路有三种状态:高电平、低电平、和高阻态。有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻的方式使电平处于稳定状态,具体视设计要求而定。

      (5)I/O端口,有的可以设置,有的不可以设置,有的是内置,有的是需要外接,I/O端口的输出类似与一个三极管的C,当C接通过一个电阻和电源连接在一起的时候,该电阻成为上C拉电阻,也就是说,如果该端口正常时为高电平,C通过一个电阻和地连接在一起的时候,该电阻称为下拉电阻,使该端口平时为低电平,作用:比如,当一个接有上拉电阻的端口设为输入状态时,他的常态就为高电平,用于检测低电平的输入;反之,当一个接有下拉电阻的端口设为输入状态时,他的常态就为低电平,用于检测高电平的输入。 
    (6)上拉电阻有时还用来解决总线驱动能力不足时,为总线提供电流,即一般说法的拉电流;下拉电阻是用来吸收电流的,也就是灌电流。比如有I2C总线使用会上拉一个10k的电阻。
    (7)端口选择还应该注意端口的初始状态。这个状态是系统复位时的状态,是不受上层软件控制的,假如选择的端口正常是高电平有效的,那么应该另选一个系统复位时是下拉状态的端口来使用。

 

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

关于STM32按键实验中连接按键的GPIO管脚是配置为上拉输入还是下拉输入的理解 的相关文章

  • crontab执行脚本出错

    最近经常碰到关于crontab不能执行的 初步总结了有以下几个原因 第一 脚本的原因 大多数情况下 是我们的脚本的问题 这种问题导致crontab不能执行的概率占到70 以上 因为程序执行到某一步导致crontab终止执行 如 数据库访问出
  • 冒泡排序的理解

    冒泡排序将数组内的元素进行一定序列的算法 如 1 5 4 6 就变成 1 4 5 6 还可以 6 5 4 1 如何实现 例如 7 23 12 4 13 21 2 17 13 9 1 7与23比较 比较出最值 如果比较最大值 7 lt 23
  • 记录运行tensorflow报错及解决方法

    1 Could not load dynamic library libcudart so 11 0 dlerror libcudart so 11 0 cannot open shared 解决方法 安装cuda 1 下载cuda安装包
  • C#WinForm窗体内Panel容器中嵌入子窗体、程序主窗体设计例子

    C WinForm父级窗体内Panel容器中嵌入子窗体 程序主窗体设计例子 在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序 顺便大概划分了下界面模块和配色 不足之处还望指点 主窗体窗体采用前面一篇博客设计扁平化窗体 C 自定义W
  • 用Python抢茅台脚本,转手纯赚一千!这不比什么兼职都管用?

    12 月我在朋友圈看到非常多的人开始在某东上抢茅台 抢到的话一瓶只要 1499 元 转手一卖就能净赚 1000 块钱 这简直就是白送钱的事嘛 就算不卖 自己囤着过个几年价格肯定又要上涨 像这种好事 我当然第一时间去体验了 抢了几天后 却抢了
  • 牛客网-OJ在线编程常见输入输出练习场(C++)

    牛客网 OJ在线编程常见输入输出练习场 C 主要分成数字和字符串输入输出两个部分 只选取几个有代表性的 详细可以去 牛客网 https ac nowcoder com acm contest 5647 from hr test questi
  • Arson In Berland Forest【Codeforces 1262 E】【二维差分 + 二分答案】

    Codeforces Round 602 Div 2 based on Technocup 2020 Elimination Round 3 E 这道E题当真是HACK了不少人 先讲一下题意吧 有一个N M的矩形 里面放了 X 和 两种类型
  • C++虚函数表解析

    本文内容参考自陈皓C 虚函数表解析 前沿 C 的虚函数主要是实现了多态的机制 关于多态 简而言之 就是父类型别的指针指向其子类的实例 然后通过父类的指针调用实际子类的成员函数 这种技术可以让父类指针有 多种形态 这是一种泛型技术 所谓泛型技
  • Android中的BGABadgeView未读消息提示小红点

    当用户收到未读消息的时候需要一个徽章来提示 也就是控件上面的一个小红点 下面就来描述一下小红点的实现方法 首先贴出BGABadgeView的Github地址 https github com bingoogolapple BGARefres
  • 【git】github 如何同步别人的仓库

    git github 如何同步别人的仓库 前言 假设你有两个 Git 仓库 并希望同步它们 以便它们含有相同的内容 你必须要在 Git 中配置一个远程服务器指向上游的仓库地址 这样你在 fork 中的更改才能同步到原始的仓库里 这样也能把原
  • Linux学习笔记day01

    Linux文件与目录结构 Linux一切皆文件 目录结构 目录名 释义 bin usr bin usr local bin 是Binary的缩写 这个目录存放着最经常使用的命令 home 存放普通用户的主目录 在Linux中每个用户都有一个
  • MDM命令操作介绍

    MDM涉及到的命令的操作介绍 一 Control Commands 控制类命令 1 Device Lock 设备锁屏 RequestType为RequestType 原文 Immediately locks the device If a
  • 单片机中OTA升级流程及bootload软件框架

    OTA升级流程及bootload软件框架 为什么要进行OTA升级 OTA升级的流程 bootload软件框架 bootload软件源码 针对接收HEX文件 为什么要进行OTA升级 OTA 英文全称是Over the Air Technolo
  • 推荐系统(2)——评测指标

    根据评测体系来评价一个推荐系统的好坏 由于推荐系统是和实际收益挂钩 所以需要考虑三方 用户 物品提供者和平台 的利益 实现最大化的三方共赢 接下来从 实 验 方 法 评
  • 若依系统取消验证码,超时登陆

    在登陆系统时 登陆界面会显示输入验证码 每次登陆比较麻烦 这里讲解下如何去除验证码 1 改变令牌时间延长登陆的超时时间 2 注掉前后台验证码中部分代码 登陆一段时间后 有时会被自动退出 这是系统现在了登陆超时时间 1 延长令牌超时时间 2
  • shell脚本部分

    第五次作业 题目 1 判断web服务是否运行 1 查看进程的方式判断该程序是否运行 2 通过查看端口的方式判断该程序是否运行 如果没有运行 则启动该服务并配置防火墙规则 2 使用curl命令访问第二题的web服务 看能否正常访问 如果能正常
  • 一文看完Vue3的渲染过程

    Vue3官网中有下面这样一张图 基本展现出了Vue3的渲染原理 本文会从源码角度来草率的看一下Vue3的运行全流程 旨在加深对上图的理解 从下面这个很简单的使用示例开始 import createApp ref from vue creat
  • springboot2.x使用redis作为缓存(使用fastjson序列化的方式,并调试反序列化异常)

    1 redis是内存数据库 可以单独作为数据库 有持久化方案 也可以作为缓存 一般为MySQL搭配 1 1 可以通过jedis 代码的方式手动将其传入redis作为缓存 1 2 也可以通过注解的方式 和spring boot整合 通过 ca
  • React井字棋后续功能完善

    React的入门教程 完成后有6个小功能点的补充 实现后的代码 import React from react import ReactDOM from react dom import index css function Square
  • 《视觉SLAM十四讲》笔记(1-3)

    目录 文章目录 目录 第1讲 引言 第2讲 初识SLAM 第3讲 三维空间刚体运动 旋转矩阵 点 向量和坐标系 坐标系间的欧式变换 变换矩阵与齐次坐标 齐次坐标 Homogeneous Coordinate 的优势 旋转向量和欧拉角 旋转向

随机推荐

  • STL系列之六 set与hash_set

    https blog csdn net MoreWindows article details 7029587
  • FFmpeg学习笔记--Ubuntu20.04编译安装FFmpeg、FFplay和FFprobe

    目录 1 下载FFmpeg 2 编译FFmpeg 3 设置环境变量 4 测试 1 下载FFmpeg 下载 5 1 版本的 ffmpeg wget http www ffmpeg org releases ffmpeg 5 1 tar gz
  • 运维工程师面试题 ----- 系统网络类

    1 如何检测某个端口所占用的进程 2 对于linux主机的cpu负载使用 什么情况下user的比例升高 什么情况下system的比例升高 请联系实际举例 3 在不umount的情况下 如何重新设置mount的参数 4 如果不小心在系统下执行
  • 01Linux下C语言锁的学习之Linux下的互斥锁

    01Linux下C语言锁的学习之Linux下的互斥锁 概述 为什么需要锁 因为当我们多个线程访问全局变量时 同时操作的话可能存在问题 例如小明和小红同时去拿家里的银行账号里的钱 小明看到时为100块 小红也是 但是小明先拿到 若不加锁 那么
  • GLUE 数据下载与提交

    1 下载 GLUE 任务分为主要的任务 CoLA MNLI MRPC QNLI QQP RTE SST 2 STS B WNLI 以及附加的任务 Diagnostic 下面简称为 AX 其中只有 STS B 是回归任务 其余的全为分类任务
  • webpack 学习(一)前端常用的模块化设计模式之AMD

    AMD 异步模块定义 是为浏览器环境设计的 因为 CommonJS 模块系统是同步加载的 当前浏览器环境还没有准备好同步加载模块的条件 AMD 定义了一套 JavaScript 模块依赖异步加载标准 来解决同步加载的问题 模块通过 defi
  • 【第十一届泰迪杯数据挖掘挑战赛】A 题:新冠疫情防控数据的分析 思路+代码(持续更新)

    第十一届泰迪杯数据挖掘挑战赛 A 题 新冠疫情防控数据的分析 思路 代码 持续更新 问题背景 解决问题 代码下载 数据分析 Task1 Task2 Task3 Task4 问题背景 自 2019 年底至今 全国各地陆续出现不同程度的新冠病毒
  • 控制反转及Bean装配的几种方式

    控制反转及Bean装配的几种方式 Spring两大基础核心 一是控制反转 二是依赖注入 控制反转和依赖注入 控制反转 通俗来讲 就是将bean的创建和销毁交由另一个东西全权管理 这个东西叫做Spring容器 一般来说 在Spring应用中
  • 华为服务器提示错误信息,服务器错误日志

    服务器错误日志 内容精选 换一换 为加强对数据的容灾管理 云堡垒机支持手动备份和配置日志远程备份 提高审计数据安全性和系统可扩展性 通过手动导出 下载各功能模块数据文件保存在本地 可手动备份日志请参见表1 系统内导出的csv文件 用Exce
  • element el-date-picker选择时间范围限制

    element el date picker选择时间范围限制
  • 生物识别技术在场景应用中发挥重大作用

    相较于条码支付 刷脸支付的硬件成本还是比较高 而且占空间 因此 其应用场景没有条码支付丰富 微信扫脸支付 在商超 餐饮以及便利店等场景中 收银空间是有限的 布放哪怕像PAD大小的刷脸支付设备都会觉得局促 如果同时布放两个哪怕像PAD大小的设
  • Odoo 进销存报表现已开源

    根据会计区间或自定义查询时间段 对仓库的产品出入库情况进行查看 模块地址参见内部群公告
  • 谷粒商城微服务分布式高级篇ElasticSearch四——Java使用ElasticSearch

    文章目录 ElasticSearch Rest Client Java使用ElasticSearch 存储数据到ES 从ES检索数据 项目使用ES ElasticSearch Rest Client Java使用ElasticSearch
  • 迷你世界箱子里物品无限取

    废话少说代码如下 在高度为8的箱子可以无限补给 function f e WorldContainer addItemToContainer e x e y e z e itemid e itemnum end 关闭盒子 函数 f 下面是添
  • TypeScript项目配置

    前言 我们需要建立tsconfig json 作用 用于标识 TypeScript 项目的根路径 用于配置 TypeScript 编译器 用于指定编译的文件 重要字段 files 设置要编译的文件的名称 include 设置需要进行编译的文
  • offsetTop、offsetParent、scrollTop以及vue如何实现左右联动效果

    offsetTop 元素到offsetParent顶部的距离 offsetParent 距离元素最近的一个具有定位的祖宗元素 relative absolute fixed 若祖宗都不符合条件 offsetParent为body 如下图所示
  • OrangePi 4b Lts GPIO最高输出频率测试

    根据示波器显示的值 在写入高低电平各有一个usleep 1 时可以输出稳定10kHz的方波 但是10k每段有50us 不知道usleep 1 为什么会变成50us 可能是digitalWrite稳定时间比较长 直接死循环里digitalWr
  • 学生管理系统主要界面

    目录 1 登录界面 login 2 信息管理界面 main 3 页面展示 本篇文章主要介绍学生管理系统主要界面 至于各界面中所含代码均基于Servlet 创建 使用 生命周期 http协议 http请求 http响应 过滤器 Ajax 异步
  • gtest编译和使用

    最近想总结一下gtest的使用 方便后面查阅 1 编译安装googletest 2 编写测试用例 3 编译测试和调试代码 1 编译安装googletest github上下载googletest release 1 10 0 这里需要注意该
  • 关于STM32按键实验中连接按键的GPIO管脚是配置为上拉输入还是下拉输入的理解

    关于STM32按键实验中连接按键的GPIO管脚是配置为上拉输入还是下拉输入的理解 以正点原子按键输入实验为例 1 按键KEY0 lt gt PE4 按键另一端接GND 2 按键KEY1 lt gt PE3 按键另一端接GND 3 按键WK