key.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /*
  2. * @Description:
  3. * @Version: 2.0
  4. * @Author: Seven
  5. * @Date: 2022-06-14 17:47:28
  6. * @LastEditors: Seven
  7. * @LastEditTime: 2022-06-15 09:25:31
  8. */
  9. #ifndef __KEY_H
  10. #define __KEY_H
  11. #include "stm32f10x.h"
  12. #include "tools.h"
  13. extern uint8_t hd_id;
  14. //PCB版本检测
  15. #define PCB_V0 0
  16. #define PCB_V1 1
  17. #define HD_ID_0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)
  18. #define HD_ID_1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)
  19. #define HD_ID_2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)
  20. #define HD_ID_3 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_5)
  21. //按键key
  22. #define KEY_NUM 3
  23. typedef struct _key_info
  24. {
  25. uint8_t execute; //执行标记
  26. uint8_t flag; //按键是否是第一次按下
  27. uint8_t pres_num; //规定时间内按下次数
  28. uint8_t pres_total_num; //按键按下的总次数
  29. uint8_t key_state; //当前按键状态
  30. uint8_t key_state_tmp; //上次按键状态
  31. // uint32_t key_state_tick; //
  32. timeout_t tt_key_press; //按下滤波延时
  33. timeout_t tt_key_release; //抬起滤波延时
  34. timeout_t tt_key; //
  35. }key_info_t;
  36. extern key_info_t key_info[KEY_NUM];
  37. #define KEY0() GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_8)//读取按键0
  38. #define KEY0_PRES 1 //KEY0按下
  39. #define KEY1_PRES 2 //KEY1按下
  40. #define KEY2_PRES 3 //KEY2按下
  41. #define WKUP_PRES 4 //KEY_UP按下(即WK_UP/KEY_UP)
  42. void HD_ID_Init(void);
  43. uint8_t get_HD_ID(void);
  44. void key_init(void);
  45. void key_press(void);
  46. #endif