|
@ -36,22 +36,40 @@ void T_key_on_event(void) |
|
|
|
|
|
|
|
|
void T_key_schedule(void) |
|
|
void T_key_schedule(void) |
|
|
{ |
|
|
{ |
|
|
|
|
|
static uint32_t key_start_press_down_time = 0; |
|
|
T_key_structer_s->key_now_state = T_key_get_level(); |
|
|
T_key_structer_s->key_now_state = T_key_get_level(); |
|
|
/* 检查是否盖上盖 */ |
|
|
/* 检查是否盖上盖 */ |
|
|
if (cover_get_level()) |
|
|
if (cover_get_level()) |
|
|
{ |
|
|
{ |
|
|
|
|
|
/* 上升沿 */ |
|
|
if ((T_key_structer_s->key_before_state != T_key_structer_s->key_now_state) && (T_key_structer_s->key_now_state == true)) |
|
|
if ((T_key_structer_s->key_before_state != T_key_structer_s->key_now_state) && (T_key_structer_s->key_now_state == true)) |
|
|
{ |
|
|
{ |
|
|
short_press_event_cb_s(); |
|
|
|
|
|
T_key_structer_s->key_start_press_down_time = port_get_ticket(); |
|
|
|
|
|
|
|
|
if (T_key_structer_s->key_press_down_keep_time != 0) |
|
|
|
|
|
{ |
|
|
|
|
|
T_key_structer_s->key_press_down_keep_time = 0; |
|
|
|
|
|
} |
|
|
|
|
|
key_start_press_down_time = port_get_ticket(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (T_key_structer_s->key_now_state) |
|
|
|
|
|
|
|
|
/* 下降沿 */ |
|
|
|
|
|
if ((T_key_structer_s->key_before_state != T_key_structer_s->key_now_state) && (T_key_structer_s->key_now_state == false)) |
|
|
{ |
|
|
{ |
|
|
if (port_get_ticket() - T_key_structer_s->key_start_press_down_time > key_long_press_time_ms) |
|
|
|
|
|
|
|
|
T_key_structer_s->key_press_down_keep_time = port_get_ticket() - key_start_press_down_time; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* 20ms消抖 */ |
|
|
|
|
|
if ((T_key_structer_s->key_press_down_keep_time > 20) && (key_start_press_down_time != 0)) |
|
|
|
|
|
{ |
|
|
|
|
|
if (T_key_structer_s->key_press_down_keep_time < 500) |
|
|
|
|
|
{ |
|
|
|
|
|
short_press_event_cb_s(); |
|
|
|
|
|
} |
|
|
|
|
|
else if (T_key_structer_s->key_press_down_keep_time >= 3000) |
|
|
{ |
|
|
{ |
|
|
long_press_event_cb_s(); |
|
|
long_press_event_cb_s(); |
|
|
} |
|
|
} |
|
|
|
|
|
key_start_press_down_time = 0; |
|
|
|
|
|
T_key_structer_s->key_press_down_keep_time = 0; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
else |
|
|
else |
|
|