led.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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 TIM_DEV_LED TIM5
  15. #define LED_PWM_RCC_ENABLE RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
  16. #define LED_GPIO_RCC_ENABLE RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA, ENABLE);
  17. #define DEV_LED_G_GPIO GPIOA
  18. #define DEV_LED_G_PIN GPIO_Pin_0
  19. #define DEV_LED_R_GPIO GPIOA
  20. #define DEV_LED_R_PIN GPIO_Pin_1
  21. #define DEV_LED_G_INIT(InitStructure) TIM5_OC1Init(InitStructure);
  22. #define DEV_LED_R_INIT(InitStructure) TIM5_OC2Init(InitStructure);
  23. #define DEV_LED_G_RUN TIM5_OC1PreloadConfig(TIM_OCPreload_Enable);
  24. #define DEV_LED_G_STOP TIM5_OC1PreloadConfig(TIM_OCPreload_Disable);
  25. #define DEV_LED_G_COMPARE(value) TIM5_SetCompare1(value)
  26. #define DEV_LED_R_RUN TIM5_OC2PreloadConfig(TIM_OCPreload_Enable);
  27. #define DEV_LED_R_STOP TIM5_OC2PreloadConfig(TIM_OCPreload_Disable);
  28. #define DEV_LED_R_COMPARE(value) TIM5_SetCompare2(value)
  29. typedef enum
  30. {
  31. LED_QUEUE_TIME = 0,
  32. }LED_QUEUE_TYPE;
  33. typedef enum{
  34. DEV_LED = 0,
  35. LED_TYPE_MAX = 1,
  36. }LED_TYPE;
  37. typedef enum{
  38. RED_LED = 0,
  39. GREEN_LED = 1,
  40. YELLOW_LED = 2,
  41. }LED_COLOR;
  42. typedef enum{
  43. LED_STAT_OFF = 0,
  44. LED_STAT_ON = 1
  45. }LED_STAT;
  46. typedef enum{
  47. LED_WORK_OFF = 0, //暗
  48. LED_WORK_ON = 1, //亮
  49. LED_WORK_INVERT = 2, //闪烁
  50. LED_WORK_BREATHE = 4, //呼吸模式
  51. LED_WORK_MAX = 5,
  52. }LED_WORK_STAT;
  53. typedef void (*led_set_duty_func)(uint16_t duty);
  54. typedef struct{
  55. uint8_t idx;
  56. LED_STAT stat;
  57. LED_COLOR color;
  58. LED_WORK_STAT workStat;
  59. uint32_t single_flicker_period;
  60. uint32_t flicker_period ;
  61. uint32_t flicker_onperiod;
  62. uint32_t flicker_count;
  63. uint8_t duty_on;
  64. uint32_t duty_value;
  65. uint32_t single_on_durationTime; //PWM变化结束后持续时间,单位:ms
  66. uint32_t on_durationTime; //PWM变化结束后持续时间,单位:ms
  67. uint32_t single_off_durationTime; //PWM变化结束后持续时间,单位:ms
  68. uint32_t off_durationTime; //PWM变化结束后持续时间,单位:ms
  69. led_set_duty_func set_duty;
  70. }led_work_s;
  71. typedef enum{
  72. LED_VIEW_NULL = 0,
  73. LED_VIEW_ENTER_OTA,
  74. LED_VIEW_OTA,
  75. }led_view_stat_e;
  76. void led_task_init(void);
  77. void led_task_start(void);
  78. bool set_led_indication(LED_TYPE type, LED_COLOR color, LED_WORK_STAT work_stat, ...);
  79. void vUser_led_set_view_stat(led_view_stat_e stat);
  80. extern tmosTaskID led_task_id;
  81. #ifdef __cplusplus
  82. }
  83. #endif
  84. #endif // LED_H__
  85. /** @} */