按键分为机械按键和(电容式/电阻式)触摸按键。
机械按键需要消抖操作,触摸按键灵敏度高可以不进行消抖处理。
按键单击属于常规操作,而双击和滑动如何实现呢?
双击判断:
在按键按下并松开后,在一段规定的时间内,判断按键是否再次按下,如果再次按下,即属于双击操作,注意这段规定的时间较短(几十几百毫秒)。
长按判断:
按键按下并维持一段规定的时间,即可判断是长按操作,注意这段规定的时间较长(几秒)。
滑动操作:
从A键滑动到B键,如何判断是滑动而不是A键和B键分别单击:当A键按下并在快松开时同时按住了A键和B键,然后松开A键并按住B键,中间有一个同时按住AB键的时隙,此操作即可判断是滑动。
代码如下:
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "touch_key.h"
#include "usart.h"
#define KEYA_SPEED1 100 //长按的时间长度(单位10mS),总共1S
#define KEYA_SPEED2 10 //双击的时间长度(单位20mS),总共200ms
int main (void){
//主程序
u16 k=1000; //用于滑动加减计数
u8 a=0,b,c=0;
u8 s=0; //刚刚结束滑动标志
RCC_Configuration(); //系统时钟初始化