led.h 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  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 95
  11. #define LED_OFF_DUTY 0
  12. #define TIM_LED_PERIOD 100
  13. #define TIM_LED_PRESCALER 360
  14. #define TIM3_LED_TYPE TIM3
  15. #define TIM4_LED_TYPE TIM4
  16. #define TIM5_LED_TYPE TIM5
  17. #define LED_PWM_RCC_ENABLE RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM4 | RCC_APB1Periph_TIM5, ENABLE);
  18. #define LED_GPIO_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
  19. #define LED_REMAPCONFIG_ENABLE GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
  20. #define DEV_LED_GPIO GPIOB
  21. #define DEV_LED_PIN GPIO_Pin_12
  22. #define DEV_LED_ON GPIO_WriteBit(DEV_LED_GPIO, DEV_LED_PIN, Bit_RESET)
  23. #define DEV_LED_OFF GPIO_WriteBit(DEV_LED_GPIO, DEV_LED_PIN, Bit_SET)
  24. #define LED_01_R_GPIO GPIOB
  25. #define LED_01_R_PIN GPIO_Pin_4
  26. #define LED_01_G_GPIO GPIOB
  27. #define LED_01_G_PIN GPIO_Pin_5
  28. #define LED_02_R_GPIO GPIOB
  29. #define LED_02_R_PIN GPIO_Pin_6
  30. #define LED_02_G_GPIO GPIOB
  31. #define LED_02_G_PIN GPIO_Pin_7
  32. #define LED_03_R_GPIO GPIOB
  33. #define LED_03_R_PIN GPIO_Pin_8
  34. #define LED_03_G_GPIO GPIOB
  35. #define LED_03_G_PIN GPIO_Pin_9
  36. #define LED_04_R_GPIO GPIOA
  37. #define LED_04_R_PIN GPIO_Pin_0
  38. #define LED_04_G_GPIO GPIOA
  39. #define LED_04_G_PIN GPIO_Pin_1
  40. #define LED_05_R_GPIO GPIOA
  41. #define LED_05_R_PIN GPIO_Pin_2
  42. #define LED_05_G_GPIO GPIOA
  43. #define LED_05_G_PIN GPIO_Pin_3
  44. #define LED_01_R_INIT(InitStructure) TIM_OC1Init(TIM3_LED_TYPE, InitStructure);
  45. #define LED_01_G_INIT(InitStructure) TIM_OC2Init(TIM3_LED_TYPE, InitStructure);
  46. #define LED_02_R_INIT(InitStructure) TIM_OC1Init(TIM4_LED_TYPE, InitStructure);
  47. #define LED_02_G_INIT(InitStructure) TIM_OC2Init(TIM4_LED_TYPE, InitStructure);
  48. #define LED_03_R_INIT(InitStructure) TIM_OC3Init(TIM4_LED_TYPE, InitStructure);
  49. #define LED_03_G_INIT(InitStructure) TIM_OC4Init(TIM4_LED_TYPE, InitStructure);
  50. #define LED_04_R_INIT(InitStructure) TIM5_OC1Init(InitStructure);
  51. #define LED_04_G_INIT(InitStructure) TIM5_OC2Init(InitStructure);
  52. #define LED_05_R_INIT(InitStructure) TIM5_OC3Init(InitStructure);
  53. #define LED_05_G_INIT(InitStructure) TIM5_OC4Init(InitStructure);
  54. #define LED_01_R_RUN TIM_OC1PreloadConfig(TIM3_LED_TYPE, TIM_OCPreload_Enable);
  55. #define LED_01_R_STOP TIM_OC1PreloadConfig(TIM3_LED_TYPE, TIM_OCPreload_Disable);
  56. #define LED_01_R_COMPARE(value) TIM_SetCompare1(TIM3_LED_TYPE, value)
  57. #define LED_01_G_RUN TIM_OC2PreloadConfig(TIM3_LED_TYPE, TIM_OCPreload_Enable);
  58. #define LED_01_G_STOP TIM_OC2PreloadConfig(TIM3_LED_TYPE, TIM_OCPreload_Disable);
  59. #define LED_01_G_COMPARE(value) TIM_SetCompare2(TIM3_LED_TYPE, value)
  60. #define LED_02_R_RUN TIM_OC1PreloadConfig(TIM4_LED_TYPE, TIM_OCPreload_Enable);
  61. #define LED_02_R_STOP TIM_OC1PreloadConfig(TIM4_LED_TYPE, TIM_OCPreload_Disable);
  62. #define LED_02_R_COMPARE(value) TIM_SetCompare1(TIM4_LED_TYPE, value)
  63. #define LED_02_G_RUN TIM_OC2PreloadConfig(TIM4_LED_TYPE, TIM_OCPreload_Enable);
  64. #define LED_02_G_STOP TIM_OC2PreloadConfig(TIM4_LED_TYPE, TIM_OCPreload_Disable);
  65. #define LED_02_G_COMPARE(value) TIM_SetCompare2(TIM4_LED_TYPE, value)
  66. #define LED_03_R_RUN TIM_OC3PreloadConfig(TIM4_LED_TYPE, TIM_OCPreload_Enable);
  67. #define LED_03_R_STOP TIM_OC3PreloadConfig(TIM4_LED_TYPE, TIM_OCPreload_Disable);
  68. #define LED_03_R_COMPARE(value) TIM_SetCompare3(TIM4_LED_TYPE, value)
  69. #define LED_03_G_RUN TIM_OC4PreloadConfig(TIM4_LED_TYPE, TIM_OCPreload_Enable);
  70. #define LED_03_G_STOP TIM_OC4PreloadConfig(TIM4_LED_TYPE, TIM_OCPreload_Disable);
  71. #define LED_03_G_COMPARE(value) TIM_SetCompare4(TIM4_LED_TYPE, value)
  72. #define LED_04_R_RUN TIM5_OC1PreloadConfig(TIM_OCPreload_Enable);
  73. #define LED_04_R_STOP TIM5_OC1PreloadConfig(TIM_OCPreload_Disable);
  74. #define LED_04_R_COMPARE(value) TIM5_SetCompare1(value)
  75. #define LED_04_G_RUN TIM5_OC2PreloadConfig(TIM_OCPreload_Enable);
  76. #define LED_04_G_STOP TIM5_OC2PreloadConfig(TIM_OCPreload_Disable);
  77. #define LED_04_G_COMPARE(value) TIM5_SetCompare2(value)
  78. #define LED_05_R_RUN TIM5_OC3PreloadConfig(TIM_OCPreload_Enable);
  79. #define LED_05_R_STOP TIM5_OC3PreloadConfig(TIM_OCPreload_Disable);
  80. #define LED_05_R_COMPARE(value) TIM5_SetCompare3(value)
  81. #define LED_05_G_RUN TIM5_OC4PreloadConfig(TIM_OCPreload_Enable);
  82. #define LED_05_G_STOP TIM5_OC4PreloadConfig(TIM_OCPreload_Disable);
  83. #define LED_05_G_COMPARE(value) TIM5_SetCompare4(value)
  84. typedef enum
  85. {
  86. LED_QUEUE_TIME = 0,
  87. }LED_QUEUE_TYPE;
  88. typedef enum{
  89. DEV_LED = 0,
  90. LED_01 = 1,
  91. LED_02 = 2,
  92. LED_03 = 3,
  93. LED_04 = 4,
  94. LED_05 = 5,
  95. LED_TYPE_MAX = 6,
  96. }LED_TYPE;
  97. typedef enum{
  98. RED_LED = 0,
  99. GREEN_LED = 1,
  100. YELLOW_LED = 2,
  101. }LED_COLOR;
  102. typedef enum{
  103. LED_STAT_OFF = 0,
  104. LED_STAT_ON = 1
  105. }LED_STAT;
  106. typedef enum{
  107. LED_WORK_OFF = 0, //暗
  108. LED_WORK_ON = 1, //亮
  109. LED_WORK_INVERT = 2, //闪烁
  110. LED_WORK_BREATHE = 4, //呼吸模式
  111. LED_WORK_MAX = 5,
  112. }LED_WORK_STAT;
  113. typedef void (*led_set_duty_func)(uint16_t duty);
  114. typedef enum{
  115. LED_VIEW_NULL = 0,
  116. LED_VIEW_ENTER_OTA,
  117. LED_VIEW_OTA,
  118. }led_view_stat_e;
  119. typedef struct{
  120. const uint8_t idx;
  121. LED_STAT stat;
  122. LED_COLOR color;
  123. LED_WORK_STAT workStat;
  124. led_view_stat_e viewStat;
  125. uint32_t single_flicker_period;
  126. uint32_t flicker_period ;
  127. uint32_t flicker_onperiod;
  128. uint32_t flicker_count;
  129. uint8_t duty_on;
  130. uint32_t duty_value;
  131. uint32_t single_on_durationTime; //PWM变化结束后持续时间,单位:ms
  132. uint32_t on_durationTime; //PWM变化结束后持续时间,单位:ms
  133. uint32_t single_off_durationTime; //PWM变化结束后持续时间,单位:ms
  134. uint32_t off_durationTime; //PWM变化结束后持续时间,单位:ms
  135. led_set_duty_func set_duty;
  136. }led_work_s;
  137. void led_task_init(void);
  138. void led_task_start(void);
  139. bool set_led_indication(LED_TYPE type, LED_COLOR color, LED_WORK_STAT work_stat, ...);
  140. void vUser_led_set_view_stat(led_view_stat_e stat);
  141. extern tmosTaskID led_task_id;
  142. #ifdef __cplusplus
  143. }
  144. #endif
  145. #endif // LED_H__
  146. /** @} */