key.h 728 B

123456789101112131415161718192021222324252627282930
  1. #ifndef __KEY_H
  2. #define __KEY_H
  3. #include "stm8s.h"
  4. typedef enum
  5. {
  6. KeyState_IDLE, //空闲状态。
  7. KeyState_CUT, //消抖状态。
  8. KeyState_PRESSED, //按下状态。
  9. KeyState_WAIT_DOUBLE_CLICK, //等待双击状态。
  10. KeyState_DOUBLE_CLICKED, //双击状态。
  11. KeyState_LONG_PRESSED //长按状态。
  12. }KeyState;
  13. typedef struct key_state
  14. {
  15. KeyState key_flag; //按键标志
  16. BitStatus level_state; //电平状态
  17. uint16_t press_time; //按下时间
  18. uint16_t end_time; //松开时间
  19. uint8_t key_cut; //按键消抖
  20. KeyState key_last; //按键最终状态
  21. }key_state_t;
  22. extern key_state_t g_key; //按键状态全局结构体
  23. extern void KeyProcess(void);
  24. #endif