UP 优化key库

This commit is contained in:
JiXieShi
2024-06-23 14:19:19 +08:00
parent 58afcd9d81
commit 3a889f16dd
4 changed files with 32 additions and 39 deletions

View File

@@ -40,20 +40,20 @@ struct Key_List {
uint8_t active_level: 1; // 按键激活电平占1位
uint8_t key_level: 1; // 当前按键电平占1位
uint8_t key_id; // 按键ID
uint8_t (*hal_key_Level)(uint8_t key_id_); // 函数指针,用于获取按键电平
uint8_t (*hal_read_pin)(uint8_t key_id_); // 函数指针,用于获取按键电平
Key_Callback_t cb[number_of_event]; // 按键事件回调函数数组
};
/**
* @brief 初始化按键模块
* @param key: [输入] 指向按键结构体指针
* @param pin_level: [输入] 获取按键电平的回调函数
* @param active_level: [输入] 激活电平
* @param key_id: [输入] 按键ID
* @brief 初始化按键结构体
* @param key: [输入] 按键结构体指针
* @param key_id: [输入] 按键ID
* @param active_level: [输入] 激活电平
* @param read_pin: [输入] 读取按键状态的函数指针
* @return void
* @example key_init(&my_key, get_pin_level, ACTIVE_HIGH, 1);
*/
void key_init(Key_t *key, uint8_t(*pin_level)(uint8_t), uint8_t active_level, uint8_t key_id);
* @example key_init(&my_key, 1, ACTIVE_HIGH, read_key_pin_func);
**/
void key_init(Key_t *key, uint8_t key_id, uint8_t active_level, uint8_t(*read_pin)(uint8_t));
/**
* @brief 为按键设置回调函数

View File

@@ -11,10 +11,10 @@ static Key_t *head_key = NULL;
static void key_state_switch(Key_t *key);
void key_init(Key_t *key, uint8_t(*pin_level)(uint8_t), uint8_t active_level, uint8_t key_id) {
void key_init(Key_t *key, uint8_t key_id, uint8_t active_level, uint8_t(*read_pin)(uint8_t)) {
memset(key, 0, sizeof(Key_t));
key->event = (uint8_t) NONE_PRESS;
key->hal_key_Level = pin_level;
key->hal_read_pin = read_pin;
key->key_level = !active_level;
key->active_level = active_level;
key->key_id = key_id;
@@ -40,7 +40,7 @@ PressEvent get_key_event(Key_t *key) {
static void key_state_switch(Key_t *key) {
// 读取按键的GPIO电平
uint8_t read_gpio_level = key->hal_key_Level(key->key_id);
uint8_t read_gpio_level = key->hal_read_pin(key->key_id);
// 如果按键状态大于0则增加ticks计数
if ((key->state) > 0) key->ticks++;