/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : bsp_key.h * @brief : 板级支持包按键驱动头文件 ****************************************************************************** */ /* USER CODE END Header */ #ifndef BSP_KEY_H #define BSP_KEY_H #include /** * @brief 按键 ID 定义 */ typedef enum { BSP_KEY_ID_KEY0 = 0, BSP_KEY_ID_KEY1, BSP_KEY_ID_WKUP, BSP_KEY_ID_MAX } bsp_key_id_t; /** * @brief 按键状态定义 */ typedef enum { BSP_KEY_STATE_RELEASED = 0, BSP_KEY_STATE_PRESSED } bsp_key_state_t; /** * @brief 按键事件定义 */ typedef enum { BSP_KEY_EVENT_NONE = 0, BSP_KEY_EVENT_PRESSED, /* 按键按下事件 */ BSP_KEY_EVENT_RELEASED, /* 按键释放事件 */ BSP_KEY_EVENT_LONG_PRESSED, /* 按键长按事件 */ BSP_KEY_EVENT_REPEAT, /* 按键重复事件 */ BSP_KEY_EVENT_SHORT_PRESSED /* 按键短按事件 */ } bsp_key_event_t; /** * @brief 初始化所有按键 */ void bsp_key_init(void); /** * @brief 更新按键状态(定期调用此函数,例如每 10ms) */ void bsp_key_update(void); /** * @brief 读取去抖后的按键状态 * @param key_id: 按键 ID * @retval 按键状态 */ bsp_key_state_t bsp_key_read(bsp_key_id_t key_id); /** * @brief 检查按键是否按下 * @param key_id: 按键 ID * @retval 按下返回 1,否则返回 0 */ uint8_t bsp_key_is_pressed(bsp_key_id_t key_id); /** * @brief 检查按键是否释放 * @param key_id: 按键 ID * @retval 释放返回 1,否则返回 0 */ uint8_t bsp_key_is_released(bsp_key_id_t key_id); /** * @brief 检查按键按下事件(边沿检测) * @param key_id: 按键 ID * @retval 按键按下返回 1,否则返回 0 */ uint8_t bsp_key_get_press_event(bsp_key_id_t key_id); /** * @brief 检查按键释放事件(边沿检测) * @param key_id: 按键 ID * @retval 按键释放返回 1,否则返回 0 */ uint8_t bsp_key_get_release_event(bsp_key_id_t key_id); /** * @brief 检查按键长按事件 * @param key_id: 按键 ID * @retval 按键长按返回 1,否则返回 0 */ uint8_t bsp_key_get_long_press_event(bsp_key_id_t key_id); /** * @brief 检查按键重复事件 * @param key_id: 按键 ID * @retval 按键重复事件发生返回 1,否则返回 0 */ uint8_t bsp_key_get_repeat_event(bsp_key_id_t key_id); /** * @brief 检查按键短按事件 * @param key_id: 按键 ID * @retval 按键短按返回 1,否则返回 0 */ uint8_t bsp_key_get_short_press_event(bsp_key_id_t key_id); #endif /* BSP_KEY_H */