准备驱动移植适配Rust
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file : bsp_key.c
|
||||
* @brief : Board support package key driver implementation
|
||||
* @brief : 板级支持包按键驱动实现
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
@ -15,7 +15,7 @@
|
||||
#include "hal_delay.h"
|
||||
|
||||
/**
|
||||
* @brief Key debounce configuration
|
||||
* @brief 按键防抖配置
|
||||
*/
|
||||
#define KEY_DEBOUNCE_COUNT 5 /* Debounce count (each update is ~10ms, so 50ms debounce) */
|
||||
#define KEY_LONG_PRESS_TIME 1000 /* Long press time in ms */
|
||||
@ -24,7 +24,7 @@
|
||||
#define KEY_UPDATE_INTERVAL 10 /* Update interval in ms */
|
||||
|
||||
/**
|
||||
* @brief Key configuration structure
|
||||
* @brief 按键配置结构体
|
||||
*/
|
||||
typedef struct {
|
||||
hal_gpio_port_t port;
|
||||
@ -33,7 +33,7 @@ typedef struct {
|
||||
} bsp_key_config_t;
|
||||
|
||||
/**
|
||||
* @brief Key state structure for debouncing and event detection
|
||||
* @brief 按键状态结构体,用于防抖和事件检测
|
||||
*/
|
||||
typedef struct {
|
||||
/* Debounce state */
|
||||
@ -63,12 +63,12 @@ typedef struct {
|
||||
} bsp_key_internal_state_t;
|
||||
|
||||
/**
|
||||
* @brief Key state table for debouncing and event detection
|
||||
* @brief 按键状态表,用于防抖和事件检测
|
||||
*/
|
||||
static bsp_key_internal_state_t key_state_table[BSP_KEY_ID_MAX] = {0};
|
||||
|
||||
/**
|
||||
* @brief Get current board button configuration
|
||||
* @brief 获取当前板卡按键配置
|
||||
*/
|
||||
static const bsp_button_config_t* bsp_key_get_button_config(bsp_key_id_t key_id) {
|
||||
const bsp_board_config_t* board_config = bsp_board_get_config();
|
||||
@ -79,9 +79,9 @@ static const bsp_button_config_t* bsp_key_get_button_config(bsp_key_id_t key_id)
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Read raw key state (without debounce)
|
||||
* @param key_id: Key ID
|
||||
* @retval Raw key state
|
||||
* @brief 读取原始按键状态(无防抖)
|
||||
* @param key_id: 按键 ID
|
||||
* @retval 原始按键状态
|
||||
*/
|
||||
static bsp_key_state_t bsp_key_read_raw(bsp_key_id_t key_id) {
|
||||
bsp_key_state_t state;
|
||||
@ -107,8 +107,8 @@ static bsp_key_state_t bsp_key_read_raw(bsp_key_id_t key_id) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Get current system time in milliseconds
|
||||
* @retval Current time in ms
|
||||
* @brief 获取当前系统时间(毫秒)
|
||||
* @retval 当前时间(毫秒)
|
||||
*/
|
||||
static uint32_t bsp_key_get_time_ms(void) {
|
||||
/* Use HAL tick function */
|
||||
@ -116,7 +116,7 @@ static uint32_t bsp_key_get_time_ms(void) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize all keys
|
||||
* @brief 初始化所有按键
|
||||
*/
|
||||
void bsp_key_init(void) {
|
||||
uint8_t i;
|
||||
@ -162,7 +162,7 @@ void bsp_key_init(void) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Update key state (call this function periodically, e.g. every 10ms)
|
||||
* @brief 更新按键状态(定期调用此函数,例如每 10ms)
|
||||
*/
|
||||
void bsp_key_update(void) {
|
||||
uint8_t i;
|
||||
@ -241,9 +241,9 @@ void bsp_key_update(void) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Read debounced key state
|
||||
* @param key_id: Key ID
|
||||
* @retval Key state
|
||||
* @brief 读取防抖后的按键状态
|
||||
* @param key_id: 按键 ID
|
||||
* @retval 按键状态
|
||||
*/
|
||||
bsp_key_state_t bsp_key_read(bsp_key_id_t key_id) {
|
||||
if (key_id < BSP_KEY_ID_MAX) {
|
||||
@ -253,27 +253,27 @@ bsp_key_state_t bsp_key_read(bsp_key_id_t key_id) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check if key is pressed
|
||||
* @param key_id: Key ID
|
||||
* @retval 1 if pressed, 0 otherwise
|
||||
* @brief 检查按键是否按下
|
||||
* @param key_id: 按键 ID
|
||||
* @retval 按下返回 1,否则返回 0
|
||||
*/
|
||||
uint8_t bsp_key_is_pressed(bsp_key_id_t key_id) {
|
||||
return (bsp_key_read(key_id) == BSP_KEY_STATE_PRESSED) ? 1 : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check if key is released
|
||||
* @param key_id: Key ID
|
||||
* @retval 1 if released, 0 otherwise
|
||||
* @brief 检查按键是否释放
|
||||
* @param key_id: 按键 ID
|
||||
* @retval 释放返回 1,否则返回 0
|
||||
*/
|
||||
uint8_t bsp_key_is_released(bsp_key_id_t key_id) {
|
||||
return (bsp_key_read(key_id) == BSP_KEY_STATE_RELEASED) ? 1 : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check for key press event (edge detection)
|
||||
* @param key_id: Key ID
|
||||
* @retval 1 if key was pressed, 0 otherwise
|
||||
* @brief 检查按键按下事件(边沿检测)
|
||||
* @param key_id: 按键 ID
|
||||
* @retval 按下事件返回 1,否则返回 0
|
||||
*/
|
||||
uint8_t bsp_key_get_press_event(bsp_key_id_t key_id) {
|
||||
uint8_t event = 0;
|
||||
@ -287,9 +287,9 @@ uint8_t bsp_key_get_press_event(bsp_key_id_t key_id) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check for key release event (edge detection)
|
||||
* @param key_id: Key ID
|
||||
* @retval 1 if key was released, 0 otherwise
|
||||
* @brief 检查按键释放事件(边沿检测)
|
||||
* @param key_id: 按键 ID
|
||||
* @retval 释放事件返回 1,否则返回 0
|
||||
*/
|
||||
uint8_t bsp_key_get_release_event(bsp_key_id_t key_id) {
|
||||
uint8_t event = 0;
|
||||
@ -303,9 +303,9 @@ uint8_t bsp_key_get_release_event(bsp_key_id_t key_id) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check for key long pressed event
|
||||
* @param key_id: Key ID
|
||||
* @retval 1 if key was long pressed, 0 otherwise
|
||||
* @brief 检查按键长按事件
|
||||
* @param key_id: 按键 ID
|
||||
* @retval 长按事件返回 1,否则返回 0
|
||||
*/
|
||||
uint8_t bsp_key_get_long_press_event(bsp_key_id_t key_id) {
|
||||
uint8_t event = 0;
|
||||
@ -319,9 +319,9 @@ uint8_t bsp_key_get_long_press_event(bsp_key_id_t key_id) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check for key repeat event
|
||||
* @param key_id: Key ID
|
||||
* @retval 1 if key repeat event occurred, 0 otherwise
|
||||
* @brief 检查按键重复事件
|
||||
* @param key_id: 按键 ID
|
||||
* @retval 重复事件返回 1,否则返回 0
|
||||
*/
|
||||
uint8_t bsp_key_get_repeat_event(bsp_key_id_t key_id) {
|
||||
uint8_t event = 0;
|
||||
@ -335,9 +335,9 @@ uint8_t bsp_key_get_repeat_event(bsp_key_id_t key_id) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Check for key short pressed event
|
||||
* @param key_id: Key ID
|
||||
* @retval 1 if key was short pressed, 0 otherwise
|
||||
* @brief 检查按键短按事件
|
||||
* @param key_id: 按键 ID
|
||||
* @retval 短按事件返回 1,否则返回 0
|
||||
*/
|
||||
uint8_t bsp_key_get_short_press_event(bsp_key_id_t key_id) {
|
||||
uint8_t event = 0;
|
||||
|
||||
Reference in New Issue
Block a user