123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #ifndef _LED_H_
- #define _LED_H_
- #include "main.h"
- #include "tim.h"
- #include "gpio.h"
- #define LED1_R_GPIO_PORT GPIOB
- #define LED1_R_PIN GPIO_PIN_7
- #define LED1_G_GPIO_PORT GPIOB
- #define LED1_G_PIN GPIO_PIN_6
- #define LED2_R_GPIO_PORT GPIOA
- #define LED2_R_PIN GPIO_PIN_12
- #define LED2_G_GPIO_PORT GPIOA
- #define LED2_G_PIN GPIO_PIN_11
- // ======== LED 状态类型定义 ========
- typedef enum {
- LED_NORMAL,
- LED_COMM,
- LED_WARNING_1,
- LED_WARNING_2,
- LED_WARNING_3,
- LED_WARNING_4,
- LED_WARNING_5,
- LED_IAP
- } LEDStatus_t;
- // ======== LED 控制结构体 ========
- typedef struct {
- GPIO_TypeDef* GPIOx;
- uint16_t GPIO_Pin;
- uint16_t flash_interval_ms; // 单次闪烁周期
- uint16_t counter;
- uint8_t enabled; // 是否启用闪烁
- uint8_t flash_times; // 连续闪烁次数(例如:2 表示每轮闪2下)
- uint8_t current_flash_count; // 当前这轮闪了几次
- uint16_t flash_pause_ms; // 连闪之间的间隔时间
- uint16_t pause_counter; // 连闪之间的等待计数器
- uint8_t in_pause; // 是否处于暂停阶段
- uint8_t pin_state; // 当前LED引脚状态(0灭,1亮)
- } LEDControl_t;
- // 定义两个灯的控制器(可扩展)
- extern LEDControl_t led_green; // 绿灯
- extern LEDControl_t led_red; // 红灯
- void LED_FlashHandler(LEDControl_t* led);
- void UpdateLEDStatus(LEDStatus_t status);
- /*************************************************************/
- // 定义LED的GPIO和PWM通道
- #define LED1_R_PWM_CHANNEL TIM_CHANNEL_1
- #define LED1_G_PWM_CHANNEL TIM_CHANNEL_2
- #define LED2_R_PWM_CHANNEL TIM_CHANNEL_1
- #define LED2_G_PWM_CHANNEL TIM_CHANNEL_2
- // 定义LED状态
- typedef enum {
- LED_OFF = 0,
- LED_ON,
- LED_BREATHING,
- LED_BLINKING
- } LED_State;
- // 定义LED控制结构体
- typedef struct {
- GPIO_TypeDef* R_GPIO_Port;
- uint16_t R_GPIO_Pin;
- GPIO_TypeDef* G_GPIO_Port;
- uint16_t G_GPIO_Pin;
- uint32_t R_PWM_Channel;
- uint32_t G_PWM_Channel;
- LED_State state;
- uint8_t r_brightness; // 红色亮度值(0-100)
- uint8_t g_brightness; // 绿色亮度值(0-100)
- uint8_t blink_count; // 闪烁次数
- uint16_t blink_interval; // 闪烁间隔(ms)
- } LED_Control;
- extern LED_Control leds[];
- void LED_SetBrightness(LED_Control* led, uint8_t r_brightness, uint8_t g_brightness) ;
- void LED_SetState(LED_Control* led, LED_State state) ;
- void LED_BreathingEffect(LED_Control* led) ;
- void LED_BlinkingEffect(LED_Control* led) ;
- void LED_UpdateStateMachine(void) ;
- #endif
|