首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

GPIO输入——按键检测

今天分享的是GPIO输入——按键检测按键检测部分还是比较简单的,与51单片机类似,采用扫描的方法,循环地判断哪个按键按下,然后执行相应的操作。 流程图大致如下: ?...这两种扫描方式的区别在于,单次扫描的状态下,按住按键不放不会有什么影响,而连续扫描状态下,按住按键不放会持续产生作用。...当第二次扫描的时候,如果mode=0(单次扫描),那么flag的值因为保持原来为0,所以不会进入按键处理函数中,而是走向右边第二次判断语句,假设已经松手了,那么也就是此时没有按键按下,flag=1,这为下次的按键检测做好准备...那么这就涉及到关键字static 了,具体用法可以参考: https://blog.csdn.net/guotianqing/article/details/79828100 总结:按键检测就是获取IO...口的状态,通过对各个按键的IO口不断进行扫描,获取是哪个按键按下并且返回值,根据返回值的不同执行相应的处理函数。

1.7K30

物联网-GPIO输入—按键检测

实验原理按键机械触点断开、闭合时,由于触点的弹性作用,按键开关不会马上稳定接通或一下子断开,使用按键时会产生图 6-1 中的带波纹信号,需要用软件消抖处理滤波,不方便输入检测。...GPIO(General Purpose Input/Output)输入在按键检测中起着关键作用。以下是使用GPIO输入进行按键检测的一般步骤:初始化GPIO:首先,需要配置GPIO引脚作为输入。...实现按键检测逻辑:在读取到按键状态后,可以实现相应的逻辑来处理按键事件。例如,可以设置一个中断处理程序来响应按键按下或释放事件。具体的实现细节可能会因微控制器的型号和开发环境的不同而有所差异。...此外,为了通过LED灯的亮灭状态来间接完成按键检测,可以配置一个LED灯连接的GPIO引脚作为输出。当检测按键按下时,将LED灯对应的引脚设置为高电平(或低电平,取决于电路设计),从而点亮LED灯。...只要我们检测引脚的输入电平,即可判断按键是否被按下。若您使用的实验板按键的连接方式或引脚不一样,只需根据我们的工程修改引脚即可,程序的控制原理相同。3.

36900
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何实现按键的短按、长按检测

    板子上只有两个按键,一个是RESET按键,一个是DOWNLOAD按键,我们使用DOWNLAOD按键按键的一端接GND,另外一端接CH573的PB22引脚。...原理图中有一个NC的C5,但是实际板子上我却没有找到它,可能是版本不一致。...以上介绍了使用中断的方式来判断按键短按,可以看到它判断的依据是按键按下(由高电平变到低电平)这个状态。下面在方法二的基础上我们来实现长按的检测,判断长按的依据是按下后持续的维持一段时间低电平。...START_LONGCHECK_TIMER ); } return (events ^ START_LONGCHECK_TIMER); } 实现的逻辑是:当检测到短按时...它兼顾了去抖和短按/长按的检测,并且长按可以判断出长按按下/长按弹起。短按是检测到弹起时认为是短按动作。另外如果想同时支持多个长按,也很方便添加。

    1.7K10

    【STM32】GPIO输入—按键检测

    ,需要用软件消抖处理滤波,不方便输入检测。...在“工程模板”之上新建“bsp_key.c”及“bsp_key.h”文件,这些文件也可根 据您的喜好命名,这些文件不属于 STM32标准库的内容,是由我们自己根据应用需要编写 的。...2.2.1编程要点 使能 GPIO端口时钟; 初始化 GPIO目标引脚为输入模式(引脚默认电平受按键电路影响,浮空/上拉/下拉均没有区别); 编写简单测试程序,检测按键的状态,实现按键控制 LED灯。...我们把按键检测引脚相关 的宏定义到 “bsp_key.h”文件中 #ifndef _BSP_KEY_H #define _BSP_KEY_H #include "sys.h" #include "stm32f4xx.h...参考文献 【1】:《零死角玩转 STM32—基于野火 F407[霸天虎]开发板 》 【2】:郭天祥.新概念51单片机C语言教程:如门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2018.1:

    94620

    Qt键盘事件(一)——检测按键输入

    当有按键按下或者松开的时候,按键事件key event将会发送消息给QWidget。Key Event包含一个特殊的接收标记,标记接收者是否处理该按键事件。...由于Jungle想标记按下的是哪个键,因此需要重载按键事件处理函数keyPressEvent。...另一方面,键盘上的每个键,都作为Qt的一个枚举成员,如下图(来源:Qt官方文档) 因此,可以在按键事件处理函数keyPressEvent中识别并在界面上打印出具体的按键。...调试过程中发现,其余键按下后界面均能打印出对应按键,但方向键却没有反应?查阅Qt官方文档后发现: 文档描述,widget必须调用setFocusPolicy方法才能接收按键事件。...要让当前的widget能够响应按键事件,可以通过调用函数setFocusPolicy或者在UI设计界面设置FocusPolicy。 06 效果

    3K20

    物联网-蜂鸣器加流水灯按键检测

    实验目的实现按键按下去的时候蜂鸣器响,并且有流水灯效果,当按下另一个按键的时候,关闭蜂鸣器和流水灯。2....蜂鸣器加流水灯按键检测是一种在嵌入式系统或微控制器(如STM32、LPC2200等)上实现的功能。它通常涉及硬件和软件两个方面。...,你需要编写程序来实现以下功能:初始化GPIO(通用输入/输出)以控制LED灯、蜂鸣器和按键。...编写按键检测程序,检测按键是否被按下。编写蜂鸣器控制程序,当检测按键被按下时,触发蜂鸣器发出声音。3. 主要仪器设备GEC-STM32F429开发板和keil 5软件4....*/ Key_GPIO_Config(); /*峰名器 初始化*/ BEEP_GPIO_Config(); /* 轮询按键状态,若按键按下则反转LED */ while(1)

    25310

    一个ADC实现多个按键检测

    获取按键值的方式 按键作为常用的输入系统,如何准确并高效的获取按键值,是一个经常要面对的问题,常用的按键检测方式有如下几种方式: 1....独立按键 每个按键检测占用单片机的一个GPIO引脚,原理图如下图所示: ?...在MCU管脚有限的情况下,矩阵按键大大的节省了I/O资源。 3. ADC分压键盘 利用电阻串联分压的原理实现一个ADC管脚去检测多个按键。...为了避免由于ADC精度、电阻的误差或者温漂等因素造成的按键检测失效,提高按键检测的可靠性,我们可以减少按键数量,适当放宽各个按键检测的电压范围。...经过上面的分析,独立按键的方式是最浪费GPIO口,矩阵按键的效率适中,而ADC分压实现的键盘使用的GPIO引脚最少。 ADC检测按键原理 ?

    2.4K21

    STM32Cube-05 | 使用EXIT检测按键

    因为没有设置硬件上拉,所以我们配置开启上拉电阻,并设置用户标签为KEY1和KEY2,接下来是最重要的一步: 开启下降沿触发中断:即在按下按键时电平由高变为低时触发 开启上升沿触发中断:即在按下按键后松开时电平由低变为高时触发...在MDK中编写、编译、下载用户代码 STM32 HAL库中断处理机制 先打开stm32l4xx_it.c文件: ?...接着探索哈哈哈~ 同样在stm32l4xx_hal_gpio.c文件中找到该函数的原型: /** * @brief EXTI line detection callback....自己实现EXIT中断处理回调函数 这个函数放在哪都行,为了方便,我们放在gpio.c的最后。...至此,我们已经学会了如何配置NVIC使用外部中断检测按键,并了解了NVIC和HAL库中断处理机制的一些基本知识,下一节讲述如何配置USART以及实现printf函数。

    93330

    c语言循环中按键跳出,C语言跳出循环

    C语言跳出循环 C语言在程序员中备受青睐,成为最近25年使用最为广泛的编程语言。那么大家知道C语言跳出循环是怎么回事呢?下面一起来看看!...来看一个例子: #includeint main(){ char c = 0; while(c!...=’ ‘){ //回车键结束循环 c=get); if(c==’4′ || c==’5’){ //按下的是数字键4或5 continue; //跳过当次循环,进入下次循环 } putc); } return...0;} 运行结果: 0123456789↙ 01236789 程序遇到while时,变量c的值为’\0’,循环条件c!...本例我们输入的是 0123456789,当读取到4或5时,if 的条件c==’4’||c==’5’成立,就执行 continue 语句,结束当前循环,直接进入下一次循环,也就是说putc);不会被执行到

    3.5K10

    【STM32学习记录2】GPIO输入—按键检测

    ,需要用软件消抖处理滤波,不方便输入检测。...在“工程模板”之上新建“bsp_key.c”及“bsp_key.h”文件,这些文件也可根 据您的喜好命名,这些文件不属于 STM32标准库的内容,是由我们自己根据应用需要编写 的。...2.2.1编程要点 使能 GPIO端口时钟; 初始化 GPIO目标引脚为输入模式(引脚默认电平受按键电路影响,浮空/上拉/下拉均没有区别); 编写简单测试程序,检测按键的状态,实现按键控制 LED灯。...我们把按键检测引脚相关 的宏定义到 “bsp_key.h”文件中 #ifndef _BSP_KEY_H #define _BSP_KEY_H #include "sys.h" #include "stm32f4xx.h...参考文献 【1】:《零死角玩转 STM32—基于野火 F407[霸天虎]开发板 》 【2】:郭天祥.新概念51单片机C语言教程:如门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2018.1:

    91410

    FPGA系统性学习笔记连载_Day15【按键检测按键消抖】 【原理及verilog仿真】篇

    FPGA系统性学习笔记连载_Day15【按键检测按键消抖】 【原理及verilog仿真】篇 本系列为FPGA系统性学习学员学习笔记整理分享,如有学习或者购买开发板意向,可加交流群联系群主。...连载《叁芯智能fpga设计与研发-第15天》 【按键检测按键消抖】 【原理及verilog仿真】 原创作者:紫枫术河 转载请联系群主授权,否则追究责任 本篇文章,记录按键检测原理、按键消抖原理,及verilog...一、按键检测 按键事件:分为按下事件、抬起事件,判断按键的状态是否改变,需要比较连续2个clk的电平是否发生改变,我用一张图,形象展示按键检测原理。...1.3、所以我们需要连续2次对按键信号进行采样,然后比较这2次的采样值是否发生改变,来确定是按下还是抬起事件; 1.4、用 assign key_down = A&(~B),检测按下,用assign...key_up = (~A)&B,检测抬起。

    97700
    领券