Keys.h 2.3 KB

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