| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /**
- ******************************************************************************
- * @file led_driver.h
- * @brief LED 驱动模块公共接口
- * 管理 13 个反向并联 LED 的底层状态机和 GPIO 操作.
- *
- * LED 状态编码:
- * 0 - 全灭 : 浮空输入 (高阻态)
- * 1 - 正向亮 : 推挽输出, 高电平
- * 2 - 反向亮 : 推挽输出, 低电平
- * 3 - 双灯同亮: 推挽输出, ~1kHz 交替翻转
- * 4 - 250ms闪: 推挽输出, 每 250ms 翻转
- * 5 - 1s 闪 : 推挽输出, 每 1s 翻转
- *
- * LED11 (PA4) 为普通高电平点亮, 仅使用状态0/1.
- ******************************************************************************
- */
- #ifndef __LED_DRIVER_H
- #define __LED_DRIVER_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include "main.h"
- /* ========== 常量 ========== */
- #define LED_COUNT 13u /* 总LED数量 */
- /* ========== LED 控制结构体 ========== */
- typedef struct {
- GPIO_TypeDef *port; /* GPIO 端口 */
- uint16_t pin; /* GPIO 引脚掩码 (1<<n) */
- uint8_t pinNum; /* 引脚序号 (0-15) */
- volatile uint8_t state; /* 当前状态 0-5 */
- } LED_Control_t;
- /* 13个LED控制块 (定义于 led_driver.c) */
- extern LED_Control_t g_leds[LED_COUNT];
- /* ========== 初始化 ========== */
- void LED_InitControlBlock(void);
- /* ========== 状态控制 ========== */
- void LED_SetState(uint8_t ledIdx, uint8_t state);
- void LED_ApplyStateToRegister(uint8_t ledIdx);
- void LED_ApplyAllStates(void);
- /* ========== 定时器回调 (在 TIM3 中断中调用) ========== */
- /**
- * @brief 每 100us 调用一次, 内部处理:
- * - 状态3 (双灯) ~1kHz 翻转 (每 0.5ms)
- * - 状态4 (250ms闪) 每 250ms 翻转
- * - 状态5 (1s闪) 每 1s 翻转
- */
- void LED_Tick100us(void);
- /* ========== LED 显示更新 (根据应用状态刷新 LED) ========== */
- void UpdateVolumeLEDs(void);
- void UpdateSourceLED(void);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __LED_DRIVER_H */
|