From abca5d603cfff3587aac7c8c7b185ceb82a8158b Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Sat, 6 Jan 2024 16:47:15 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E4=BC=98=E5=8C=96=E9=95=BF=E7=9F=AD?= =?UTF-8?q?=E6=8C=89=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/by_rt_button.h | 13 ++++++++----- app/isr.c | 24 +++++++++--------------- libraries/zf_driver/zf_driver_delay.h | 3 --- 3 files changed, 17 insertions(+), 23 deletions(-) diff --git a/app/by_rt_button.h b/app/by_rt_button.h index 2b84c70..c42d6e0 100644 --- a/app/by_rt_button.h +++ b/app/by_rt_button.h @@ -4,12 +4,15 @@ #include "stdio.h" #include "ch32v30x.h" -typedef enum rotate_button_event{ +#define LONG_PRESS_THRESHOLD_MS (300ULL) +#define LONG_PRESS_THRESHOLD_TICK (LONG_PRESS_THRESHOLD_MS * 18000ULL) + +typedef enum rotate_button_event { rotate_button_press_short = 1, - rotate_button_press_long = 2, - rotate_button_forward = 3, - rotate_button_backward = 4, -}rotate_button_event; + rotate_button_press_long = 2, + rotate_button_forward = 3, + rotate_button_backward = 4, +} rotate_button_event; extern uint8_t rotate_button; diff --git a/app/isr.c b/app/isr.c index fb875c8..6e909d6 100644 --- a/app/isr.c +++ b/app/isr.c @@ -219,24 +219,18 @@ void EXTI15_10_IRQHandler(void) } if (SET == EXTI_GetITStatus(EXTI_Line11)) { static uint64_t time_via = 0; - + system_delay_ms(10); if (RESET == gpio_get_level(E11)) { - system_delay_us(200); - if (RESET == gpio_get_level(E11)) { - time_via = system_get_tick(); - } + time_via = system_get_tick(); EXTI_ClearITPendingBit(EXTI_Line11); - } else { - system_delay_us(200); - 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; - } else { - rotate_button = rotate_button_press_short; - } - time_via = 0; + } 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; + } else { + rotate_button = rotate_button_press_short; } + time_via = 0; EXTI_ClearITPendingBit(EXTI_Line11); } if (SET == EXTI_GetITStatus(EXTI_Line12)) { diff --git a/libraries/zf_driver/zf_driver_delay.h b/libraries/zf_driver/zf_driver_delay.h index 07fb8b0..57befa7 100644 --- a/libraries/zf_driver/zf_driver_delay.h +++ b/libraries/zf_driver/zf_driver_delay.h @@ -39,9 +39,6 @@ #include "zf_common_clock.h" #include "zf_common_typedef.h" -#define LONG_PRESS_THRESHOLD_MS (300ULL) -#define LONG_PRESS_THRESHOLD_TICK (LONG_PRESS_THRESHOLD_MS * 18000ULL) - void system_delay_ms(uint32 time); void system_delay_us(uint32 time); uint64_t system_get_tick(void);