/* * hw_config.h * * 可变化的硬件相关逻辑: GPIO 中断、睡眠/唤醒时序、开机初始化、 * 节能曲线表、声音检测。 * 换 PCB / 改引脚 / 调启动流程时只需修改 hw_config.c 即可, * ukey.c 和 ledx.c 的纯逻辑代码不动。 */ #ifndef HW_CONFIG_H #define HW_CONFIG_H #include "CH58x_common.h" /* struct eco_s 定义在 ledx.h */ /* ---- 原 ukey.c 变量, 此处供 hw_config.c 使用 ---- */ extern uint8_t key_down_counter; extern uint32_t key_down_time; extern uint16_t sys_idle_count; extern BOOL need_pwup; extern uint32_t sys_open_time; extern BOOL is_key_down; extern BOOL skip_this_btn_down; extern uint8_t count_5; extern BOOL is_powup_first; extern BOOL is_iqr_weekup; /* ---- 其他模块变量 ---- */ extern BOOL isRFOn; /* RF_PHY.c */ extern BOOL IS_RF_INITED; /* RF_main.c */ /* eco_plan[] 定义在 hw_config.c, sizeof 对外部数组不可用,改为手动计数 */ #ifndef ECO_PLAN_LEN #define ECO_PLAN_LEN 1 #endif /* ---- 节能状态机 (定义在 hw_config.c) ---- */ extern volatile uint8_t eco_idx; extern volatile uint16_t eco_sec; extern volatile uint16_t eco_loop_sec; uint8_t resetEco(void); uint8_t changeEco(void); /* ---- 声音检测 (原 ledx.c static 变量去 static) ---- */ extern uint32_t _led_current_sound_systick; extern volatile uint16_t inSound; extern uint8_t sound_debounce_count; extern uint8_t last_gpio_state; /* ---- 函数声明 ---- */ __INTERRUPT __HIGH_CODE void GPIOA_IRQHandler(void); void checkbleOnOrOff(uint32_t key_up_time); void sw_hal_sleep(void); void sys_startup(void); uint8_t catchSound(void); #endif /* HW_CONFIG_H */