参考网友 @暖暖的纠结 的按键方法,做了些优化,做了一个方便移植的按键版本。
代码如下:
头文件
#ifndef KEY_DETECT_H
#define KEY_DETECT_H
typedef struct{
unsigned char pressdown_flag; //按键按下标志,在中断中置1,key_detect函数中置0
unsigned char short_flag; //短按标志,key_detect中置1,需要手动置0!
unsigned char long_flag; //长按标志,key_detect中置1,需要手动置0!
unsigned char double_flag; //双击标志, key_detect中置1,需要手动置0!
unsigned char (*read_input)(void); //检测按键输入函数,根椐实际情况封装
}key_s;
void key_detect (key_s * k);
#endif // KEY_DETECT_H
C文件
#include "key_detect.h"
void key_detect (key_s * k)
{
static int down_counter = 0; //按键持续按下计数器
static int up