1 实现原理 简单来说就是通过设置一个定时器来定时扫描几个按键的状态,并分别记录按键按下的持续时间,通过时间的长短就可以判断出是长按还是短按。 本文硬件接线图如下: 2 实现代码 1、key.h 主要是一些按键引脚以及后面需要使用的变量定义。 #ifndef __KEY_H #define __KEY_H #include "sys.h" #define ...
key_s.count++;key_s.double_count++;if(key_s.count>=KEY_DOUBLE_MAX)//表示超过双击最小时间间隔{key_s.key_resault=KEY_1_DOWN;//按键检测最终结果为单次按下key_s.state=KEY_NONE;//清除按键状态}break;caseKEY_1_LONG://长按按键后松开,需要对按键结果和状态即使清除key_s.state=KEY_NONE;key_...
如果长按用来实现数据保存,那么,就直接在长按执行代码里设置保存标志位或者直接保存数据。这里KEY4按键长按LED闪烁是在按键检测函数里直接执行的,而短按是在键值处理函数里执行的。之所以这么做,是因为按键长按不松手,键值一直不变,按键处理函数只会被执行一次,请看前文的ScanKey函数。KEY1长按,短按都是在键值处...
typedefstruct{uint8_tKey_Press;//按键按下标志uint8_tL1_S_Flag;//Key1短按标志uint8_tL1_L_Flag;//Key1长按标志uint8_tL1_C_Flag;//Key1点击标志uint8_tL2_S_Flag;//Key2短按标志uint8_tL2_L_Flag;//Key2长按标志uint8_tL2_C_Flag;//Key2点击标志uint8_tL12_L_Flag;//Key1和2长按...
Stm32cubemx 配置 我们还可以设置长按的时间来设置不同的状态, 这也是实现仅一个按键可以实现控制多个...
stm32独立按键拒绝死等,支持多按键同时按下,短按,长按程序已在论坛开源电子论坛:lt.tjxdz.cn, 视频播放量 3848、弹幕量 0、点赞数 99、投硬币枚数 11、收藏人数 125、转发人数 3, 视频作者 单片机又出bug了, 作者简介 电子论坛论坛:lt.tjxdz.cn ,相关视频:stm32F429
按键硬件连接 按键的一个引脚连接到STM32的GPIO输入引脚,另一个引脚接地。STM32的GPIO引脚需要配置为输入模式,并启用内部上拉电阻。 按键检测逻辑 短按检测:当按键被按下时,检测到低电平,松开后检测到高电平,通过去抖动处理后确认为短按。 长按检测:在短按的基础上,增加一个计时器,当按键持续被按下超过设定的...
time =0;if(KEY_PRESS(GPIOx,GPIO_Pin))//按键按下{ longtime++; }else//按键松开{if((longtime >=3) && (longtime <= SHORT_TIME))//短按{ key_value = KEY_SHORT; }elseif( longtime > SHORT_TIME )//长按{ key_value = KEY_LONG; ...
if(!val)//按键按下 记录按下的时间 { count++;} else //按键松开 计数值清零并返回按下的时间值...
STM32使用HAL库实现按键的单击、双击、长按目录STM32使用HAL库实现按键的单击、双击、长按前言具体思路工程配置代码实现实验效果前言编程开发环境:STM32CubeIDE ~~~ 按键的单击、双击、长按等在MCU编程中是比较常见且常用的事件,本文章基于STM32来实现,具体思路用在其他MCU也是 0 STM32使用HAL库实现按键的单击...