Files
stm32f407ve_black/BSP/Inc/bsp_key.h
2026-01-29 15:08:30 +08:00

112 lines
2.6 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : bsp_key.h
* @brief : 板级支持包按键驱动头文件
******************************************************************************
*/
/* USER CODE END Header */
#ifndef BSP_KEY_H
#define BSP_KEY_H
#include <stdint.h>
/**
* @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 */