user_led.h 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. #ifndef USER_LED_H__
  2. #define USER_LED_H__
  3. #include <stdint.h>
  4. #include <stdbool.h>
  5. #include "define.h"
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9. #define LED_INTERVAL 10
  10. #define LED_ON_DUTY 100
  11. #define LED_OFF_DUTY 0
  12. #define TIM_LED_PERIOD 100
  13. #define TIM_LED_PRESCALER 360
  14. #define TIM_DEV_LED TIM5
  15. #define TIM_LIGHT_LED TIM3
  16. #define LED_PWM_RCC_ENABLE RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM5, ENABLE);
  17. #define LED_GPIO_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
  18. #define LED_REMAPCONFIG_ENABLE GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);
  19. #define DEV_LED_R_GPIO GPIOA
  20. #define DEV_LED_R_PIN GPIO_Pin_1
  21. #define DEV_LED_G_GPIO GPIOA
  22. #define DEV_LED_G_PIN GPIO_Pin_0
  23. #define LEFT_LIGHT_GPIO GPIOC
  24. #define LEFT_LIGHT_PIN GPIO_Pin_7
  25. #define RIGHT_LIGHT_GPIO GPIOC
  26. #define RIGHT_LIGHT_PIN GPIO_Pin_6
  27. #define LEFT_PWM_GPIO GPIOC
  28. #define LEFT_PWM_PIN GPIO_Pin_9
  29. #define RIGHT_PWM_GPIO GPIOC
  30. #define RIGHT_PWM_PIN GPIO_Pin_8
  31. #define DEV_LED_R_INIT(InitStructure) TIM5_OC2Init(InitStructure);
  32. #define DEV_LED_G_INIT(InitStructure) TIM5_OC1Init(InitStructure);
  33. #define LEFT_LIGHT_INIT(InitStructure) TIM_OC2Init(TIM_LIGHT_LED, InitStructure);
  34. #define RIGHT_LIGHT_INIT(InitStructure) TIM_OC1Init(TIM_LIGHT_LED, InitStructure);
  35. #define LEFT_PWM_INIT(InitStructure) TIM_OC4Init(TIM_LIGHT_LED, InitStructure);
  36. #define RIGHT_PWM_INIT(InitStructure) TIM_OC3Init(TIM_LIGHT_LED, InitStructure);
  37. #define DEV_LED_R_RUN TIM5_OC2PreloadConfig(TIM_OCPreload_Enable);
  38. #define DEV_LED_R_STOP TIM5_OC2PreloadConfig(TIM_OCPreload_Disable);
  39. #define DEV_LED_R_COMPARE(value) TIM5_SetCompare2(value)
  40. #define DEV_LED_G_RUN TIM5_OC1PreloadConfig(TIM_OCPreload_Enable);
  41. #define DEV_LED_G_STOP TIM5_OC1PreloadConfig(TIM_OCPreload_Disable);
  42. #define DEV_LED_G_COMPARE(value) TIM5_SetCompare1(value)
  43. #define LEFT_LIGHT_RUN TIM_OC2PreloadConfig(TIM_LIGHT_LED, TIM_OCPreload_Enable);
  44. #define LEFT_LIGHT_STOP TIM_OC2PreloadConfig(TIM_LIGHT_LED, TIM_OCPreload_Disable);
  45. #define LEFT_LIGHT_COMPARE(value) TIM_SetCompare2(TIM_LIGHT_LED, value)
  46. #define RIGHT_LIGHT_RUN TIM_OC1PreloadConfig(TIM_LIGHT_LED, TIM_OCPreload_Enable);
  47. #define RIGHT_LIGHT_STOP TIM_OC1PreloadConfig(TIM_LIGHT_LED, TIM_OCPreload_Disable);
  48. #define RIGHT_LIGHT_COMPARE(value) TIM_SetCompare1(TIM_LIGHT_LED, value)
  49. #define LEFT_PWM_RUN TIM_OC4PreloadConfig(TIM_LIGHT_LED, TIM_OCPreload_Enable);
  50. #define LEFT_PWM_STOP TIM_OC4PreloadConfig(TIM_LIGHT_LED, TIM_OCPreload_Disable);
  51. #define LEFT_PWM_COMPARE(value) TIM_SetCompare4(TIM_LIGHT_LED, value)
  52. #define RIGHT_PWM_RUN TIM_OC3PreloadConfig(TIM_LIGHT_LED, TIM_OCPreload_Enable);
  53. #define RIGHT_PWM_STOP TIM_OC3PreloadConfig(TIM_LIGHT_LED, TIM_OCPreload_Disable);
  54. #define RIGHT_PWM_COMPARE(value) TIM_SetCompare3(TIM_LIGHT_LED, value)
  55. typedef enum
  56. {
  57. LED_QUEUE_TIME = 0,
  58. }LED_QUEUE_TYPE;
  59. typedef enum{
  60. DEV_LED = 0,
  61. LEFT_LIGHT = 1,
  62. RIGHT_LIGHT = 2,
  63. LEFT_PWM = 3,
  64. RIGHT_PWM = 4,
  65. LED_TYPE_MAX = 5,
  66. }LED_TYPE;
  67. typedef enum{
  68. RED_LED = 0,
  69. GREEN_LED = 1,
  70. YELLOW_LED = 2,
  71. }LED_COLOR;
  72. typedef enum{
  73. LED_STAT_OFF = 0,
  74. LED_STAT_ON = 1
  75. }LED_STAT;
  76. typedef enum{
  77. LED_WORK_OFF = 0, //暗
  78. LED_WORK_ON = 1, //亮
  79. LED_WORK_INVERT = 2, //闪烁
  80. LED_WORK_BREATHE = 4, //呼吸模式
  81. LED_WORK_MAX = 5,
  82. }LED_WORK_STAT;
  83. typedef void (*led_set_duty_func)(uint16_t duty);
  84. typedef enum{
  85. LED_VIEW_NULL = 0,
  86. LED_VIEW_ALARM, //报警
  87. LED_VIEW_WARN, //警告
  88. LED_VIEW_KEY_ELECT, //有钥匙并上锁
  89. LED_VIEW_NOKEY_ELECT, //无钥匙并上锁
  90. LED_VIEW_KEY_NOELECT, //有钥匙没上锁
  91. LED_VIEW_NOKEY_NOELECT, //无钥匙没上锁
  92. }led_view_stat_e;
  93. typedef enum{
  94. LED_ALL_ALARM_RST = 0,
  95. LED_ALL_ALARM_BLE = 1,
  96. LED_ALL_ALARM_CAN_IDX_ERROR = 2,
  97. LED_ALL_ALARM_OFFLINE = 3,
  98. }led_all_alarm_stat_e;
  99. typedef struct{
  100. const uint8_t idx;
  101. LED_STAT stat;
  102. LED_COLOR color;
  103. LED_WORK_STAT workStat;
  104. led_view_stat_e viewStat;
  105. uint32_t single_flicker_period;
  106. uint32_t flicker_period ;
  107. uint32_t flicker_onperiod;
  108. uint32_t flicker_count;
  109. uint8_t duty_on;
  110. uint32_t duty_value;
  111. uint32_t single_on_durationTime; //PWM变化结束后持续时间,单位:ms
  112. uint32_t on_durationTime; //PWM变化结束后持续时间,单位:ms
  113. uint32_t single_off_durationTime; //PWM变化结束后持续时间,单位:ms
  114. uint32_t off_durationTime; //PWM变化结束后持续时间,单位:ms
  115. led_set_duty_func set_duty;
  116. }led_work_s;
  117. void led_task_init(void);
  118. void led_task_start(void);
  119. bool set_led_indication(LED_TYPE type, LED_COLOR color, LED_WORK_STAT work_stat, ...);
  120. void vUser_led_set_alarm_view(led_all_alarm_stat_e alarmStat, bool stat);
  121. void vUser_led_set_bright(uint8_t idx, uint16_t duty);
  122. extern tmosTaskID led_task_id;
  123. #ifdef __cplusplus
  124. }
  125. #endif
  126. #endif // LED_H__
  127. /** @} */