| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /*
- * hw_config.h
- *
- * 可变化的硬件相关逻辑: GPIO 中断、睡眠/唤醒时序、开机初始化、
- * 节能曲线表、声音检测。
- * 换 PCB / 改引脚 / 调启动流程时只需修改 hw_config.c 即可,
- * ukey.c 和 ledx.c 的纯逻辑代码不动。
- */
- #ifndef HW_CONFIG_H
- #define HW_CONFIG_H
- #include "CH58x_common.h"
- /* ---- 节能亮度曲线 ----
- * 定义在 hw_config.c 的 eco_plan[],由 eco_advance()/eco_reset() 消费。
- * 本结构此前放在 ledx.h,导致 hw_config.c 必须包含 ledx.h 才能引用它;
- * 移到此处后 hw_config.h 自足,ledx.h <-> hw_config.h 的循环包含被断开。 */
- struct eco_s {
- uint16_t pwm_start; /* 阶段起始 PWM (1/100 单位) */
- uint16_t sec; /* 阶段持续时间 (秒) */
- uint16_t pwm_end; /* 阶段结束 PWM */
- uint8_t is_loop; /* 1=循环体 (结束后跳回循环体起点) */
- uint16_t loop_max_sec; /* 循环体总时长上限 (秒), 0=无限 */
- };
- extern struct eco_s eco_plan[];
- /* ---- 按键/电源状态(定义在 ukey.c) ---- */
- extern uint8_t key_short_count; /* 短按计数,key_handle_short_press 消费 */
- extern uint32_t key_press_tick; /* 本次按下时刻 */
- extern uint16_t g_power_idle_count; /* 掉电态空闲计数 */
- extern uint32_t g_power_boot_tick; /* 开机时刻,用于防抖判定 */
- extern BOOL g_power_woke_by_irq; /* 本次唤醒是否来自 GPIO 中断 */
- extern BOOL g_power_need_reset; /* 上电复位请求,key_poll 消费后清零 */
- /* ---- 其他模块变量 ---- */
- extern BOOL g_rf_is_on; /* RF_PHY.c */
- extern BOOL IS_RF_INITED; /* RF_main.c */
- /* eco_plan[] 定义在 hw_config.c, 阶段数 ECO_PLAN_LEN 由 sizeof 自动计算 (仅 hw_config.c 内部用)。
- * 数据由 pindef.h::MLED_ECO_PLAN_DATA 提供, 改数据无需手动同步长度。 */
- /* ---- 节能状态机 (定义在 hw_config.c) ---- */
- extern volatile uint8_t eco_idx;
- extern volatile uint16_t eco_sec;
- extern volatile uint16_t eco_loop_sec;
- void eco_reset(void);
- uint8_t eco_advance(void);
- /* ---- 声音检测 (原 ledx.c static 变量去 static) ---- */
- extern uint32_t sound_last_tick;
- extern volatile uint16_t sound_hold;
- extern uint8_t sound_debounce;
- extern uint8_t sound_last_level;
- /* ---- 函数声明 ---- */
- __INTERRUPT __HIGH_CODE void GPIOA_IRQHandler(void);
- __INTERRUPT __HIGH_CODE void GPIOB_IRQHandler(void);
- void key_handle_short_press(uint32_t key_release_tick);
- void power_enter_sleep(void);
- void power_boot(void);
- uint8_t sound_poll(void);
- void sound_detect_start(void);
- void sound_detect_stop(void);
- #endif /* HW_CONFIG_H */
|