feat: 更新旋转编码器配置

This commit is contained in:
bmy
2024-04-16 09:58:51 +08:00
parent c5edd57aa8
commit 36ca756209
2 changed files with 55 additions and 57 deletions

View File

@@ -17,10 +17,10 @@ uint8_t by_get_rb_status(void)
void by_rb_init(void) void by_rb_init(void)
{ {
gpio_init(E9, GPI, GPIO_HIGH, GPI_PULL_UP); gpio_init(B9, GPI, GPIO_HIGH, GPI_PULL_UP);
gpio_init(E10, GPI, GPIO_HIGH, GPI_PULL_UP); gpio_init(E0, GPI, GPIO_HIGH, GPI_PULL_UP);
gpio_init(E11, GPI, GPIO_HIGH, GPI_PULL_UP); gpio_init(E1, GPI, GPIO_HIGH, GPI_PULL_UP);
exti_init(E9, EXTI_TRIGGER_FALLING); exti_init(E0, EXTI_TRIGGER_FALLING);
exti_init(E11, EXTI_TRIGGER_BOTH); exti_init(E1, EXTI_TRIGGER_BOTH);
} }

View File

@@ -152,6 +152,15 @@ void DVP_IRQHandler(void)
void EXTI0_IRQHandler(void) void EXTI0_IRQHandler(void)
{ {
if (SET == EXTI_GetITStatus(EXTI_Line0)) { if (SET == EXTI_GetITStatus(EXTI_Line0)) {
if (rotate_button == rotate_button_none) {
if (SET == gpio_get_level(B9)) {
rotate_button = rotate_button_backward;
queue_add_element(BY_BACKWARD);
} else {
rotate_button = rotate_button_forward;
queue_add_element(BY_FORWARD);
}
}
EXTI_ClearITPendingBit(EXTI_Line0); EXTI_ClearITPendingBit(EXTI_Line0);
} }
} }
@@ -159,6 +168,23 @@ void EXTI0_IRQHandler(void)
void EXTI1_IRQHandler(void) void EXTI1_IRQHandler(void)
{ {
if (SET == EXTI_GetITStatus(EXTI_Line1)) { if (SET == EXTI_GetITStatus(EXTI_Line1)) {
static uint64_t time_via = 0;
system_delay_ms(10);
if (RESET == gpio_get_level(E1)) {
time_via = system_get_tick();
} else if (SET == gpio_get_level(E1)) {
time_via = system_get_tick() - time_via;
if (time_via > LONG_PRESS_THRESHOLD_TICK) {
rotate_button = rotate_button_press_long;
queue_add_element(BY_PRESS_LONG);
} else {
rotate_button = rotate_button_press_short;
queue_add_element(BY_PRESS_SHORT);
}
time_via = 0;
}
EXTI_ClearITPendingBit(EXTI_Line1); EXTI_ClearITPendingBit(EXTI_Line1);
} }
} }
@@ -199,17 +225,6 @@ void EXTI9_5_IRQHandler(void)
EXTI_ClearITPendingBit(EXTI_Line8); EXTI_ClearITPendingBit(EXTI_Line8);
} }
if (SET == EXTI_GetITStatus(EXTI_Line9)) { if (SET == EXTI_GetITStatus(EXTI_Line9)) {
if (rotate_button == rotate_button_none) {
if (SET == gpio_get_level(E10)) {
rotate_button = rotate_button_backward;
queue_add_element(BY_BACKWARD);
} else {
rotate_button = rotate_button_forward;
queue_add_element(BY_FORWARD);
}
}
EXTI_ClearITPendingBit(EXTI_Line9); EXTI_ClearITPendingBit(EXTI_Line9);
} }
} }
@@ -225,22 +240,6 @@ void EXTI15_10_IRQHandler(void)
EXTI_ClearITPendingBit(EXTI_Line10); EXTI_ClearITPendingBit(EXTI_Line10);
} }
if (SET == EXTI_GetITStatus(EXTI_Line11)) { if (SET == EXTI_GetITStatus(EXTI_Line11)) {
static uint64_t time_via = 0;
system_delay_ms(10);
if (RESET == gpio_get_level(E11)) {
time_via = system_get_tick();
EXTI_ClearITPendingBit(EXTI_Line11);
} else if (SET == gpio_get_level(E11)) {
time_via = system_get_tick() - time_via;
if (time_via > LONG_PRESS_THRESHOLD_TICK) {
rotate_button = rotate_button_press_long;
queue_add_element(BY_PRESS_LONG);
} else {
rotate_button = rotate_button_press_short;
queue_add_element(BY_PRESS_SHORT);
}
time_via = 0;
EXTI_ClearITPendingBit(EXTI_Line11); EXTI_ClearITPendingBit(EXTI_Line11);
} }
if (SET == EXTI_GetITStatus(EXTI_Line12)) { if (SET == EXTI_GetITStatus(EXTI_Line12)) {
@@ -269,7 +268,6 @@ void EXTI15_10_IRQHandler(void)
EXTI_ClearITPendingBit(EXTI_Line15); EXTI_ClearITPendingBit(EXTI_Line15);
} }
} }
}
void TIM1_UP_IRQHandler(void) void TIM1_UP_IRQHandler(void)
{ {