// // Created by iflyt on 2025/3/17. // #ifndef TIMER_KEY_MANAGER_H #define TIMER_KEY_MANAGER_H #include #include // 按键和传感器引脚定义 #define SYSTEM_POWER_PIN GPIO_PIN_0 #define SYSTEM_POWER_PORT GPIOA #define E_STOP_PIN GPIO_PIN_12 #define E_STOP_PORT GPIOF #define TIMER_KEY_COUNT 2 /** * 按键状态 */ enum class ButtonStateExtended { BUTTON_STATE_IDLE, BUTTON_STATE_PRESSED, BUTTON_STATE_LONG_PRESSED, BUTTON_STATE_LONG_RELEASED }; struct TimerKeyInfo { GPIO_TypeDef* port; uint16_t pin; uint32_t longPressTime; uint32_t pressStartTime; ButtonStateExtended state; }; class TimerKeyManager { public: TimerKeyManager(); ~TimerKeyManager(); void start(); void poll(); private: static TimerKeyInfo timer_keys_[TIMER_KEY_COUNT]; osTimerId_t timer_; }; #endif //TIMER_KEY_MANAGER_H