81ca6b903492307ad357c0121ca29d3e1962888b.svn-base 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /**
  2. * @File: Keys.c
  3. * @Author: Kinve JQ
  4. * @Version: V0.1
  5. * @Date: 2018.09.30
  6. * @Brief:
  7. * @Modify:
  8. 2018.09.30.Kinve:1.创建文件
  9. **/
  10. #ifndef __KEYS_H_
  11. #define __KEYS_H_
  12. #include "Common.h"
  13. /* 宏定义 --------------------------------------------------------------------*/
  14. /*
  15. 短按: 1次,80ms~280ms(down)
  16. 长按: 1200ms~>>(down)
  17. 双击: 2次,80ms~280ms(down) -> 0ms~280ms(up) -> 80ms~280ms(down)
  18. */
  19. #define KEY_TIME (20) //10ms任务,扫描一次
  20. #define CANCEL_KEY_DOWN (80/KEY_TIME) //按下<80ms,取消
  21. #define SHORT_KEY_DOWN (320/KEY_TIME) //短按80ms-280ms
  22. #define LONG_KEY_DOWN (2500/KEY_TIME) //长按2.5s
  23. #define CANCEL_KEY_UP (80/KEY_TIME) //松开超过80ms,取消
  24. #define MAL_KEY_DOWN (10000/KEY_TIME) //长按超过10s,故障
  25. #define HANDLE_KEY_TIME (100/KEY_TIME) //按键处理时间
  26. /* 类型定义 ------------------------------------------------------------------*/
  27. enum KEY_SIG_DEF
  28. {
  29. KEY_CLICK_CS, //测试
  30. KEY_CLICK_JS, //计时
  31. KEY_LONG_CS, //长按测试
  32. KEY_LONG_JS, //长按计时
  33. KEYSIG_MAX
  34. };
  35. /* 常量定义 ------------------------------------------------------------------*/
  36. enum KEY_DEF
  37. {
  38. KEY_CS, //测试
  39. KEY_MAX
  40. };
  41. enum KeyState
  42. {
  43. KEY_UP_FLAG,
  44. KEY_DOWN_FLAG
  45. };
  46. enum KeyRes
  47. {
  48. NO_KEY_FLAG,
  49. ONE_HITS_KEY_FLAG,
  50. TWO_HITS_KEY_FLAG,
  51. THREE_HITS_KEY_FLAG,
  52. LONG_KEY_FLAG,
  53. MAX_KEY_FLAG
  54. };
  55. typedef struct
  56. {
  57. u8 ID; //按键号
  58. u8 (*GetKey)(void); //获取状态:1.按下, 0.松开
  59. u8 State; //状态
  60. u16 DnTime; //down计时
  61. u16 UpTime; //up计时
  62. u8 HitNum; //单击计次
  63. u8 Res; //最后结果
  64. } pKey;
  65. extern volatile pKey Keys[KEY_MAX];
  66. /* 函数定义------------------------------------------------------------------ */
  67. extern void ScanKey ( void );
  68. extern void Keys_Init( void );
  69. extern void Keys_All_Handler(void);
  70. extern void Keys_Even(void); //10ms
  71. #endif
  72. /********************* (C) COPYRIGHT Kinve JQ *******END OF FILE ********/