From 85fe5a27df25e24da14a60ffcbd355e7930330da Mon Sep 17 00:00:00 2001 From: bmy <2583236812@qq.com> Date: Sat, 10 Feb 2024 16:19:51 +0800 Subject: [PATCH] =?UTF-8?q?pref:=20=E6=94=B9=E8=BF=9B=E6=8C=89=E9=94=AE?= =?UTF-8?q?=E4=BD=93=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/by_buzzer.c | 10 +++++++ app/by_buzzer.h | 1 + app/isr.c | 80 ++++++++++++++++++++++++++++--------------------- app/main.c | 9 +++--- 4 files changed, 61 insertions(+), 39 deletions(-) diff --git a/app/by_buzzer.c b/app/by_buzzer.c index 6af01c9..b4df4d0 100644 --- a/app/by_buzzer.c +++ b/app/by_buzzer.c @@ -51,3 +51,13 @@ void by_buzzer_add(uint16_t tone) { queue_add_element(tone); } + +void by_buzzer_run(void) +{ + if (queue_long != 0) { + pwm_init(BUZZER_PIN, a[0], 5000); + queue_pop_element(); + system_delay_ms(100); + pwm_set_duty(BUZZER_PIN, 0); + } +} \ No newline at end of file diff --git a/app/by_buzzer.h b/app/by_buzzer.h index 060c1b8..b58c9a6 100644 --- a/app/by_buzzer.h +++ b/app/by_buzzer.h @@ -20,4 +20,5 @@ extern void queue_pop_element(void); extern void queue_pop_read(void); extern void by_buzzer_init(void); extern void by_buzzer_add(uint16_t tone); +extern void by_buzzer_run(void); #endif \ No newline at end of file diff --git a/app/isr.c b/app/isr.c index 4c57fb0..e0f81ac 100644 --- a/app/isr.c +++ b/app/isr.c @@ -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); } diff --git a/app/main.c b/app/main.c index 8e69e41..8b712e3 100644 --- a/app/main.c +++ b/app/main.c @@ -36,23 +36,22 @@ int main(void) debug_init(); // mt9v03x_init(); ips200_init(IPS200_TYPE_SPI); - usb_cdc_init(); by_led_init(); by_buzzer_init(); by_button_init(); - jj_bt_init(); + // jj_bt_init(); // jj_param_eeprom_init(); Page_Init(); - pit_ms_init(TIM6_PIT, 2); - pit_ms_init(TIM1_PIT, 2); + // pit_ms_init(TIM6_PIT, 2); + // pit_ms_init(TIM1_PIT, 2); while (1) { Page_Run(); - queue_pop_read(); + by_buzzer_run(); if (mt9v03x_finish_flag) { // 该操作消耗大概 1970 个 tick,折合约 110us memcpy(mt9v03x_image_copy[0], mt9v03x_image[0], (sizeof(mt9v03x_image_copy) / sizeof(uint8_t)));