pref: 改进按键体验

This commit is contained in:
bmy
2024-02-10 16:19:51 +08:00
parent 27c50ceea8
commit 85fe5a27df
4 changed files with 61 additions and 39 deletions

View File

@@ -202,61 +202,73 @@ void EXTI9_5_IRQHandler(void)
void EXTI15_10_IRQHandler(void)
{
if (SET == EXTI_GetITStatus(EXTI_Line10)) {
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_LEFT_PIN)) {
button_event = button_event_left;
if (button_event == button_event_none) {
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_LEFT_PIN)) {
button_event = button_event_left;
}
by_buzzer_add(1250);
}
by_buzzer_add(1250);
EXTI_ClearITPendingBit(EXTI_Line10);
}
if (SET == EXTI_GetITStatus(EXTI_Line11)) {
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_DOWN_PIN)) {
button_event = button_event_down;
if (button_event == button_event_none) {
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_DOWN_PIN)) {
button_event = button_event_down;
}
by_buzzer_add(1250);
}
by_buzzer_add(1250);
EXTI_ClearITPendingBit(EXTI_Line11);
}
if (SET == EXTI_GetITStatus(EXTI_Line12)) {
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_UP_PIN)) {
button_event = button_event_up;
if (button_event == button_event_none) {
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_UP_PIN)) {
button_event = button_event_up;
}
by_buzzer_add(1250);
}
by_buzzer_add(1250);
EXTI_ClearITPendingBit(EXTI_Line12);
}
if (SET == EXTI_GetITStatus(EXTI_Line13)) {
static uint64_t time_via = 0;
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_CENTER_PIN)) {
time_via = system_get_tick();
} else if (SET == gpio_get_level(BUTTON_CENTER_PIN)) {
time_via = system_get_tick() - time_via;
if (time_via > LONG_PRESS_THRESHOLD_TICK) {
button_event = button_event_center_lp;
by_buzzer_add(2000);
} else {
button_event = button_event_center_sp;
by_buzzer_add(1800);
if (button_event == button_event_none) {
static uint64_t time_via = 0;
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_CENTER_PIN)) {
time_via = system_get_tick();
} else if (SET == gpio_get_level(BUTTON_CENTER_PIN)) {
time_via = system_get_tick() - time_via;
if (time_via > LONG_PRESS_THRESHOLD_TICK) {
button_event = button_event_center_lp;
by_buzzer_add(2000);
} else {
button_event = button_event_center_sp;
by_buzzer_add(1800);
}
time_via = 0;
}
time_via = 0;
}
EXTI_ClearITPendingBit(EXTI_Line13);
}
if (SET == EXTI_GetITStatus(EXTI_Line14)) {
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_RIGHT_PIN)) {
button_event = button_event_right;
by_buzzer_add(1250);
if (button_event == button_event_none) {
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_RIGHT_PIN)) {
button_event = button_event_right;
by_buzzer_add(1250);
}
}
EXTI_ClearITPendingBit(EXTI_Line14);
}
if (SET == EXTI_GetITStatus(EXTI_Line15)) {
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_SIDE_PIN)) {
button_event = button_event_side;
by_buzzer_add(2000);
by_buzzer_add(1500);
if (button_event == button_event_none) {
system_delay_ms(10);
if (RESET == gpio_get_level(BUTTON_SIDE_PIN)) {
button_event = button_event_side;
by_buzzer_add(2000);
by_buzzer_add(1500);
}
}
EXTI_ClearITPendingBit(EXTI_Line15);
}