标题:
简单的STM32开关按键单击、双击、三击以及长安检测程序
[打印本页]
作者:
英语
时间:
2019-8-24 09:08
标题:
简单的STM32开关按键单击、双击、三击以及长安检测程序
下列为一路按键检测,可以增加到多路,原理都是这样的,工程应用在附件里。
STM32单片机源程序如下:
//按键检测
void key_scan(void)
{
key_s.get_key_num=get_key_value();
if(key_s.get_key_num) //判断是否有按键按下
{
switch(key_s.get_key_num)
{
//============================================================================================
case KEY_1: //按键1按下
switch(key_s.state)
{
case KEY_NONE: //之前没有检测到按下
key_s.state=KEY_1_DOWN;
break;
case KEY_1_DOWN: //检测到按下
key_s.long_count++; //长按检测开始
if(key_s.long_count>=KEY_LONG_TIME)
{
key_s.key_resault=KEY_1_LONG;
key_s.state=KEY_1_LONG;
}
break;
case KEY_1_UP: //双击按下
key_s.state=KEY_1_DUBDOW;
key_s.count=0;
break;
case KEY_1_LONG: //长按按下等待释放
break;
case KEY_1_DUBDOW: //双击按下等待释放
break;
case KEY_1_TIEBLE: //三击按下等待释放
break;
case KEY_1_DOUBLE: //三击按下
key_s.state=KEY_1_TIEBLE;
break;
default:
break;
}
break;
default:
break;
}
}
else
{
switch(key_s.state)
{
case KEY_NONE: //没有检测到按下
key_s.count=0;
key_s.double_count=0;
key_s.long_count=0;
key_s.trible_count=0;
break;
//============================================================================================
case KEY_1_DOWN: //检测到按键1按下后松手
key_s.state=KEY_1_UP;
break;
case KEY_1_UP:
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;
case KEY_1_LONG:
key_s.state=KEY_NONE;
break;
case KEY_1_DUBDOW:
key_s.state=KEY_1_DOUBLE;
break;
case KEY_1_DOUBLE:
key_s.count++; //双击计数超时检测
key_s.trible_count++;
if(key_s.count>=KEY_DOUBLE_MAX)
{
if((key_s.double_count>=KEY_DOUBLE_MIN)&&(key_s.double_count<=KEY_DOUBLE_MAX))
{
key_s.key_resault=KEY_1_DOUBLE;
}
key_s.state=KEY_NONE;
}
break;
case KEY_1_TIEBLE:
if((key_s.trible_count>=KEY_DOUBLE_MIN)&&(key_s.trible_count<=KEY_DOUBLE_MAX))
{
key_s.key_resault=KEY_1_TIEBLE;
}
key_s.state=KEY_NONE;
break;
default:
break;
}
}
}
全部资料51hei下载地址:
STM32_key_chank.7z
(184.6 KB, 下载次数: 115)
2019-8-25 15:37 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
yajun4613
时间:
2020-3-14 18:18
受教受教,谢谢
作者:
timeabcd
时间:
2021-1-12 19:35
牛牛的,谢谢啊!拿来用下!
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1