led.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #ifndef _LED_H_
  2. #define _LED_H_
  3. #include "main.h"
  4. #include "gpio.h"
  5. #define LED1_R_GPIO_PORT GPIOB
  6. #define LED1_R_PIN GPIO_PIN_13
  7. #define LED1_G_GPIO_PORT GPIOB
  8. #define LED1_G_PIN GPIO_PIN_12
  9. // ======== LED 状态类型定义 ========
  10. typedef enum {
  11. LED_NORMAL,
  12. LED_G,
  13. LED_R,
  14. LED_COMM,
  15. LED_WARNING_1,
  16. LED_WARNING_2,
  17. LED_WARNING_3,
  18. LED_WARNING_4,
  19. LED_WARNING_5,
  20. LED_IAP
  21. } LEDStatus_t;
  22. // ======== LED 控制结构体 ========
  23. typedef struct {
  24. GPIO_TypeDef* GPIOx;
  25. uint16_t GPIO_Pin;
  26. uint16_t flash_interval_ms; // 单次闪烁周期
  27. uint16_t counter;
  28. uint8_t enabled; // 是否启用闪烁
  29. uint8_t flash_times; // 连续闪烁次数(例如:2 表示每轮闪2下)
  30. uint8_t current_flash_count; // 当前这轮闪了几次
  31. uint16_t flash_pause_ms; // 连闪之间的间隔时间
  32. uint16_t pause_counter; // 连闪之间的等待计数器
  33. uint8_t in_pause; // 是否处于暂停阶段
  34. uint8_t pin_state; // 当前LED引脚状态(0灭,1亮)
  35. } LEDControl_t;
  36. // 定义两个灯的控制器(可扩展)
  37. extern LEDControl_t led_green; // 绿灯
  38. extern LEDControl_t led_red; // 红灯
  39. void LED_FlashHandler(LEDControl_t* led_self, LEDControl_t* led_other);
  40. void UpdateLEDStatus(LEDStatus_t status);
  41. #endif