led.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #ifndef _LED_H_
  2. #define _LED_H_
  3. #include "main.h"
  4. #include "tim.h"
  5. #include "gpio.h"
  6. #define LED1_R_GPIO_PORT GPIOB
  7. #define LED1_R_PIN GPIO_PIN_7
  8. #define LED1_G_GPIO_PORT GPIOB
  9. #define LED1_G_PIN GPIO_PIN_6
  10. #define LED2_R_GPIO_PORT GPIOA
  11. #define LED2_R_PIN GPIO_PIN_12
  12. #define LED2_G_GPIO_PORT GPIOA
  13. #define LED2_G_PIN GPIO_PIN_11
  14. // ======== LED 状态类型定义 ========
  15. typedef enum {
  16. LED_NORMAL,
  17. LED_COMM,
  18. LED_WARNING_1,
  19. LED_WARNING_2,
  20. LED_WARNING_3,
  21. LED_WARNING_4,
  22. LED_WARNING_5,
  23. LED_IAP
  24. } LEDStatus_t;
  25. // ======== LED 控制结构体 ========
  26. typedef struct {
  27. GPIO_TypeDef* GPIOx;
  28. uint16_t GPIO_Pin;
  29. uint16_t flash_interval_ms; // 单次闪烁周期
  30. uint16_t counter;
  31. uint8_t enabled; // 是否启用闪烁
  32. uint8_t flash_times; // 连续闪烁次数(例如:2 表示每轮闪2下)
  33. uint8_t current_flash_count; // 当前这轮闪了几次
  34. uint16_t flash_pause_ms; // 连闪之间的间隔时间
  35. uint16_t pause_counter; // 连闪之间的等待计数器
  36. uint8_t in_pause; // 是否处于暂停阶段
  37. uint8_t pin_state; // 当前LED引脚状态(0灭,1亮)
  38. } LEDControl_t;
  39. // 定义两个灯的控制器(可扩展)
  40. extern LEDControl_t led_green; // 绿灯
  41. extern LEDControl_t led_red; // 红灯
  42. void LED_FlashHandler(LEDControl_t* led);
  43. void UpdateLEDStatus(LEDStatus_t status);
  44. /*************************************************************/
  45. // 定义LED的GPIO和PWM通道
  46. #define LED1_R_PWM_CHANNEL TIM_CHANNEL_1
  47. #define LED1_G_PWM_CHANNEL TIM_CHANNEL_2
  48. #define LED2_R_PWM_CHANNEL TIM_CHANNEL_1
  49. #define LED2_G_PWM_CHANNEL TIM_CHANNEL_2
  50. // 定义LED状态
  51. typedef enum {
  52. LED_OFF = 0,
  53. LED_ON,
  54. LED_BREATHING,
  55. LED_BLINKING
  56. } LED_State;
  57. // 定义LED控制结构体
  58. typedef struct {
  59. GPIO_TypeDef* R_GPIO_Port;
  60. uint16_t R_GPIO_Pin;
  61. GPIO_TypeDef* G_GPIO_Port;
  62. uint16_t G_GPIO_Pin;
  63. uint32_t R_PWM_Channel;
  64. uint32_t G_PWM_Channel;
  65. LED_State state;
  66. uint8_t r_brightness; // 红色亮度值(0-100)
  67. uint8_t g_brightness; // 绿色亮度值(0-100)
  68. uint8_t blink_count; // 闪烁次数
  69. uint16_t blink_interval; // 闪烁间隔(ms)
  70. } LED_Control;
  71. extern LED_Control leds[];
  72. void LED_SetBrightness(LED_Control* led, uint8_t r_brightness, uint8_t g_brightness) ;
  73. void LED_SetState(LED_Control* led, LED_State state) ;
  74. void LED_BreathingEffect(LED_Control* led) ;
  75. void LED_BlinkingEffect(LED_Control* led) ;
  76. void LED_UpdateStateMachine(void) ;
  77. #endif