/** * @File: Keys.c * @Author: Kinve JQ * @Version: V0.1 * @Date: 2018.09.30 * @Brief: * @Modify: 2018.09.30.Kinve:1.创建文件 **/ #ifndef __KEYS_H_ #define __KEYS_H_ #include "Common.h" /* 宏定义 --------------------------------------------------------------------*/ /* 短按: 1次,80ms~280ms(down) 长按: 1200ms~>>(down) 双击: 2次,80ms~280ms(down) -> 0ms~280ms(up) -> 80ms~280ms(down) */ #define KEY_TIME (20) //10ms任务,扫描一次 #define CANCEL_KEY_DOWN (80/KEY_TIME) //按下<80ms,取消 #define SHORT_KEY_DOWN (320/KEY_TIME) //短按80ms-280ms #define LONG_KEY_DOWN (2500/KEY_TIME) //长按2.5s #define CANCEL_KEY_UP (80/KEY_TIME) //松开超过80ms,取消 #define MAL_KEY_DOWN (10000/KEY_TIME) //长按超过10s,故障 #define HANDLE_KEY_TIME (100/KEY_TIME) //按键处理时间 /* 类型定义 ------------------------------------------------------------------*/ enum KEY_SIG_DEF { KEY_CLICK_CS, //测试 KEY_CLICK_JS, //计时 KEY_LONG_CS, //长按测试 KEY_LONG_JS, //长按计时 KEYSIG_MAX }; /* 常量定义 ------------------------------------------------------------------*/ enum KEY_DEF { KEY_CS, //测试 KEY_MAX }; enum KeyState { KEY_UP_FLAG, KEY_DOWN_FLAG }; enum KeyRes { NO_KEY_FLAG, ONE_HITS_KEY_FLAG, TWO_HITS_KEY_FLAG, THREE_HITS_KEY_FLAG, LONG_KEY_FLAG, MAX_KEY_FLAG }; typedef struct { u8 ID; //按键号 u8 (*GetKey)(void); //获取状态:1.按下, 0.松开 u8 State; //状态 u16 DnTime; //down计时 u16 UpTime; //up计时 u8 HitNum; //单击计次 u8 Res; //最后结果 } pKey; extern volatile pKey Keys[KEY_MAX]; /* 函数定义------------------------------------------------------------------ */ extern void ScanKey ( void ); extern void Keys_Init( void ); extern void Keys_All_Handler(void); extern void Keys_Even(void); //10ms #endif /********************* (C) COPYRIGHT Kinve JQ *******END OF FILE ********/