user_elect.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #ifndef USER_ELECT_H__
  2. #define USER_ELECT_H__
  3. #include <stdint.h>
  4. #include <stdbool.h>
  5. #include "define.h"
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. #define ELECT_COUNT 2
  10. #define ELECT_INTERVAL 10
  11. #define ELECT_IN_CHECK_COUNT 10
  12. #define ELECT_IN_CHECK_FAST_COUNT 2
  13. #define ELECT_GPIO_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE)
  14. #define ELECT_LEFT_OPEN_GPIO GPIOC
  15. #define ELECT_LEFT_OPEN_PIN GPIO_Pin_1
  16. #define ELECT_LEFT_OPEN_ON GPIO_WriteBit(ELECT_LEFT_OPEN_GPIO, ELECT_LEFT_OPEN_PIN, Bit_SET)
  17. #define ELECT_LEFT_OPEN_OFF GPIO_WriteBit(ELECT_LEFT_OPEN_GPIO, ELECT_LEFT_OPEN_PIN, Bit_RESET)
  18. #define ELECT_RIGHT_OPEN_GPIO GPIOC
  19. #define ELECT_RIGHT_OPEN_PIN GPIO_Pin_3
  20. #define ELECT_RIGHT_OPEN_ON GPIO_WriteBit(ELECT_RIGHT_OPEN_GPIO, ELECT_RIGHT_OPEN_PIN, Bit_SET)
  21. #define ELECT_RIGHT_OPEN_OFF GPIO_WriteBit(ELECT_RIGHT_OPEN_GPIO, ELECT_RIGHT_OPEN_PIN, Bit_RESET)
  22. #define ELECT_LEFT_IN_GPIO GPIOC
  23. #define ELECT_LEFT_IN_PIN GPIO_Pin_0
  24. #define ELECT_LEFT_IN_IN GPIO_ReadInputDataBit(ELECT_LEFT_IN_GPIO, ELECT_LEFT_IN_PIN)
  25. #define ELECT_RIGHT_IN_GPIO GPIOC
  26. #define ELECT_RIGHT_IN_PIN GPIO_Pin_2
  27. #define ELECT_RIGHT_IN_IN GPIO_ReadInputDataBit(ELECT_RIGHT_IN_GPIO, ELECT_RIGHT_IN_PIN)
  28. typedef enum{
  29. ELECT_WORK_NULL,
  30. ELECT_WORK_START,
  31. ELECT_WORK_END,
  32. }elect_work_type_e;
  33. typedef void (*elect_work_stat_func)(elect_work_type_e type);
  34. typedef void (*elect_in_upload_func)(uint8_t idx, bool stat);
  35. typedef bool (*elect_get_level_func)(void);
  36. typedef struct{
  37. const uint8_t idx;
  38. elect_work_type_e type;
  39. uint32_t workTime;
  40. elect_work_stat_func func;
  41. uint8_t elect_in_stat;
  42. bool elect_in_finish;
  43. uint8_t elect_in_on_count;
  44. uint8_t elect_in_off_count;
  45. uint8_t elect_default_count;
  46. elect_get_level_func get_level;
  47. }elect_work_s;
  48. typedef enum
  49. {
  50. ELECT_QUEUE_TIME = 0,
  51. ELECT_QUEUE_IN_TIME = 1,
  52. }ELECT_QUEUE_TYPE;
  53. void vUser_elect_task_init(void);
  54. void vUser_elect_task_start(void);
  55. void vUser_elect_start(uint8_t addr);
  56. void vUser_elect_open(uint8_t idx);
  57. void vUser_elect_set_upload_stat_func(elect_in_upload_func func);
  58. extern tmosTaskID elect_task_id;
  59. #ifdef __cplusplus
  60. }
  61. #endif
  62. #endif // LED_H__
  63. /** @} */