elect_sw.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef _ELECT_SW_H__
  2. #define _ELECT_SW_H__
  3. #include <stdint.h>
  4. #include <stdbool.h>
  5. #include "define.h"
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. #define ELECT_SW_INTERVAL 5
  10. #define ELECT_SW_CHECK_COUNT 10
  11. #define ELECT_SW_CHECK_FAST_COUNT 2
  12. #define ELECT_SW_GPIO_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
  13. #define ELECT_LEFT_SW_GPIO GPIOA
  14. #define ELECT_LEFT_SW_PIN GPIO_Pin_3
  15. #define ELECT_LEFT_SW_IN GPIO_ReadInputDataBit(ELECT_LEFT_SW_GPIO, ELECT_LEFT_SW_PIN)
  16. #define ELECT_RIGHT_SW_GPIO GPIOA
  17. #define ELECT_RIGHT_SW_PIN GPIO_Pin_2
  18. #define ELECT_RIGHT_SW_IN GPIO_ReadInputDataBit(ELECT_RIGHT_SW_GPIO, ELECT_RIGHT_SW_PIN)
  19. typedef bool (*get_level_func)(void);
  20. typedef enum{
  21. ELECTSW_STAT_NULL = 0,
  22. ELECTSW_STAT_OPEN = 1,
  23. ELECTSW_STAT_CLOSE = 2,
  24. }electsw_stat_e;
  25. typedef struct{
  26. uint8_t idx;
  27. electsw_stat_e electsw_stat;
  28. bool electsw_finish;
  29. uint8_t electsw_on_count;
  30. uint8_t electsw_off_count;
  31. get_level_func get_level;
  32. }electsw_work_s;
  33. typedef void (*electsw_upload_func)(uint8_t idx, bool stat);
  34. void vElectsw_init(void);
  35. void electsw_task_start(void);
  36. void vElectsw_set_upload_func(electsw_upload_func func);
  37. uint16_t electsw_task_process_event(uint8_t task_id, uint16_t events);
  38. electsw_stat_e bElectsw_get_stat(uint8_t idx);
  39. #endif //_SWITCH_H__