Key.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #ifndef __STM32_LED_H
  2. #define __STM32_LED_H
  3. #include "main.h"
  4. //
  5. /*
  6. 短按: 1次,80ms~280ms(down)
  7. 长按: 1200ms~>>(down)
  8. 双击: 2次,80ms~280ms(down) -> 0ms~280ms(up) -> 80ms~280ms(down)
  9. */
  10. #define SCAN_TIME (10) //10ms任务,扫描一次
  11. #define CANCEL_KEY_DOWN (80/SCAN_TIME) //按下<80ms,取消
  12. #define SHORT_KEY_DOWN (280/SCAN_TIME) //短按80ms-280ms
  13. #define LONG_KEY_DOWN (1200/SCAN_TIME) //长按1.2s
  14. #define CANCEL_KEY_UP (280/SCAN_TIME) //松开超过280ms,取消
  15. #define HANDLE_KEY_TIME (240/SCAN_TIME) //按键处理时间
  16. enum KeyState
  17. {
  18. KEY_UP_FLAG,
  19. KEY_DOWN_FLAG
  20. };
  21. enum KeyRes
  22. {
  23. NO_KEY_FLAG,
  24. ONE_HITS_KEY_FLAG,
  25. TWO_HITS_KEY_FLAG,
  26. THREE_HITS_KEY_FLAG,
  27. LONG_KEY_FLAG,
  28. MAX_KEY_FLAG
  29. };
  30. typedef struct
  31. {
  32. unsigned char ID; //按键号
  33. unsigned char State; //状态
  34. unsigned short DnTime; //down计时
  35. unsigned short UpTime; //up计时
  36. unsigned char HitNum; //单击计次
  37. unsigned char Res; //最后结果
  38. } pKey;
  39. /*tea5767
  40. K11: up+
  41. K12: down-
  42. */
  43. /*ds1302
  44. K13: 开机时间复位
  45. K14: 菜单
  46. K15: up+
  47. K16: down-
  48. */
  49. extern pKey Keys[16];
  50. extern void GPIO_ConfigurationKey ( void );
  51. extern unsigned short ScanKey ( void );
  52. extern void KeyHander ( void );
  53. #endif