feat: 添加旋转编码器按键长短按功能

This commit is contained in:
2024-01-05 15:55:17 +08:00
parent b4b265cdef
commit 535cb372df
8 changed files with 75 additions and 38 deletions

View File

@@ -198,10 +198,10 @@ void EXTI9_5_IRQHandler(void)
if (SET == EXTI_GetITStatus(EXTI_Line9)) {
if (SET == gpio_get_level(E10)) {
rotate_button = ROTATE_BUTTON_BACKWARD;
rotate_button = rotate_button_backward;
} else {
rotate_button = ROTATE_BUTTON_FORWARD;
rotate_button = rotate_button_forward;
}
EXTI_ClearITPendingBit(EXTI_Line9);
}
@@ -218,37 +218,54 @@ void EXTI15_10_IRQHandler(void)
EXTI_ClearITPendingBit(EXTI_Line10);
}
if (SET == EXTI_GetITStatus(EXTI_Line11)) {
static uint64_t time_fly = 0;
system_delay_us(200);
if (SET == !gpio_get_level(E11)) {
rotate_button = ROTATE_BUTTON_PRESS;
if (RESET == gpio_get_level(E11)) {
system_delay_us(200);
if (RESET == gpio_get_level(E11)) {
time_fly = system_get_tick();
// rotate_button = rotate_button_press_short;
}
EXTI_ClearITPendingBit(EXTI_Line11);
} else {
system_delay_us(200);
if (SET == gpio_get_level(E11)) {
// rotate_button = rotate_button_press_short;
time_fly = system_get_tick() - time_fly;
if (time_fly > LONG_PRESS_THRESHOLD_TICK) {
rotate_button = rotate_button_press_long;
} else {
rotate_button = rotate_button_press_short;
}
time_fly = 0;
}
EXTI_ClearITPendingBit(EXTI_Line11);
}
EXTI_ClearITPendingBit(EXTI_Line11);
}
if (SET == EXTI_GetITStatus(EXTI_Line12)) {
EXTI_ClearITPendingBit(EXTI_Line12);
}
if (SET == EXTI_GetITStatus(EXTI_Line13)) {
// -----------------* ToF INT <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
tof_module_exti_handler();
// -----------------* ToF INT <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
// <20>˴<EFBFBD><CBB4><EFBFBD>д<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> (A13/B13..E13) <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>
if (SET == EXTI_GetITStatus(EXTI_Line12)) {
EXTI_ClearITPendingBit(EXTI_Line12);
}
if (SET == EXTI_GetITStatus(EXTI_Line13)) {
// -----------------* ToF INT <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
tof_module_exti_handler();
// -----------------* ToF INT <20><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
// <20>˴<EFBFBD><CBB4><EFBFBD>д<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> (A13/B13..E13) <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>
// <20>˴<EFBFBD><CBB4><EFBFBD>д<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> (A13/B13..E13) <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>
// <20>˴<EFBFBD><CBB4><EFBFBD>д<EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> (A13/B13..E13) <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>
EXTI_ClearITPendingBit(EXTI_Line13);
}
if (SET == EXTI_GetITStatus(EXTI_Line14)) {
// -----------------* DM1XA <20><><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
dm1xa_light_callback();
// -----------------* DM1XA <20><><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
EXTI_ClearITPendingBit(EXTI_Line14);
}
if (SET == EXTI_GetITStatus(EXTI_Line15)) {
// -----------------* DM1XA <20><>/<2F><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
dm1xa_sound_callback();
// -----------------* DM1XA <20><>/<2F><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
EXTI_ClearITPendingBit(EXTI_Line15);
EXTI_ClearITPendingBit(EXTI_Line13);
}
if (SET == EXTI_GetITStatus(EXTI_Line14)) {
// -----------------* DM1XA <20><><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
dm1xa_light_callback();
// -----------------* DM1XA <20><><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
EXTI_ClearITPendingBit(EXTI_Line14);
}
if (SET == EXTI_GetITStatus(EXTI_Line15)) {
// -----------------* DM1XA <20><>/<2F><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
dm1xa_sound_callback();
// -----------------* DM1XA <20><>/<2F><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD> Ԥ<><D4A4><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> *-----------------
EXTI_ClearITPendingBit(EXTI_Line15);
}
}
}