From 7efb0ee9858e1535be0067cd6c2eb9dbe4900f94 Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Thu, 4 Jan 2024 22:07:13 +0800 Subject: [PATCH 1/5] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=AE=9E?= =?UTF-8?q?=E6=97=B6=E5=9B=BE=E5=83=8F=E6=98=BE=E7=A4=BA=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=20fix:=20=E4=BF=AE=E6=94=B9=E6=97=8B=E8=BD=AC=E7=BC=96?= =?UTF-8?q?=E7=A0=81=E5=99=A8=E6=8E=A5=E5=8F=A3=E4=B8=AD=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=8B=BC=E5=86=99=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20pref:=20=E4=BF=AE=E6=94=B9zf=5Fcommon=5Ffont.c=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=AD>=E5=AD=97=E7=AC=A6=E7=9A=84=E5=9B=BE?= =?UTF-8?q?=E6=A1=88,=E6=96=B9=E4=BE=BF=E4=BD=9C=E4=B8=BA=E6=8C=87?= =?UTF-8?q?=E9=92=88=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/by_fan_control.c | 6 ++- app/by_pt_button.h | 17 ------- app/{by_pt_button.c => by_rt_button.c} | 23 +++++---- app/by_rt_button.h | 17 +++++++ app/isr.c | 17 ++++--- app/main.c | 69 ++++++++++++++++---------- app/page/cw_page.c | 53 +++++++++++++------- app/page/cw_page.h | 9 ++-- app/page/cw_page_menu.c | 7 ++- app/page/cw_page_rtcam.c | 15 +++--- libraries/zf_common/zf_common_font.c | 21 ++++---- 11 files changed, 148 insertions(+), 106 deletions(-) delete mode 100644 app/by_pt_button.h rename app/{by_pt_button.c => by_rt_button.c} (72%) create mode 100644 app/by_rt_button.h diff --git a/app/by_fan_control.c b/app/by_fan_control.c index ad7ccc5..66d2b11 100644 --- a/app/by_fan_control.c +++ b/app/by_fan_control.c @@ -12,11 +12,13 @@ void by_pwm_init(void) void by_pwm_update_duty(uint32_t update_pwm_duty) { - if (7000UL > update_pwm_duty) { - update_pwm_duty = 7000UL; + if (4000UL < update_pwm_duty) { + update_pwm_duty = 4000UL; } pwm_set_duty(TIM4_PWM_MAP1_CH1_D12, update_pwm_duty); pwm_set_duty(TIM4_PWM_MAP1_CH2_D13, update_pwm_duty); + // pwm_set_duty(TIM4_PWM_MAP1_CH3_D14, update_pwm_duty); + // pwm_set_duty(TIM4_PWM_MAP1_CH4_D15, update_pwm_duty); } void by_pwm_power_duty(uint32_t power_pwm_duty_l, uint32_t power_pwm_duty_r) diff --git a/app/by_pt_button.h b/app/by_pt_button.h deleted file mode 100644 index 0a7202f..0000000 --- a/app/by_pt_button.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef _BY_PT_BUTTON_H__ -#define _BY_PT_BUTTON_H__ - -#include "stdio.h" -#include "ch32v30x.h" -#define POTATE_BUTTOM_PRESS 1 -#define POTATE_BUTTOM_FOREWARD 2 -#define POTATE_BUTTOM_BACKWARD 3 -extern uint8_t potate_button; - - -extern void by_exit_init(void); -extern void by_gpio_init(void); -extern uint8_t by_get_statu(void); -extern void by_ips_show(void); - -#endif \ No newline at end of file diff --git a/app/by_pt_button.c b/app/by_rt_button.c similarity index 72% rename from app/by_pt_button.c rename to app/by_rt_button.c index 549478d..c9147cd 100644 --- a/app/by_pt_button.c +++ b/app/by_rt_button.c @@ -1,7 +1,7 @@ -#include "by_pt_button.h" +#include "by_rt_button.h" #include "zf_common_headfile.h" #include "by_imu.h" -uint8_t potate_button; +uint8_t rotate_button; void by_gpio_init(void) { @@ -14,18 +14,23 @@ void by_exit_init(void) exti_init(E11, EXTI_TRIGGER_FALLING); } -uint8_t by_get_pb_statu(void) +/** + * @brief 查询旋钮状态 - 查询后状态归零 + * + * @return uint8_t 当前旋钮状态 + */ +uint8_t by_get_rb_status(void) { - uint8_t temp_s = potate_button; - potate_button = 0; + uint8_t temp_s = rotate_button; + rotate_button = 0; return temp_s; } void by_ips_show(void) { - ips200_show_string(0, 0, "button statu:"); - // ips200_show_uint(104, 0, by_get_pb_statu(), 1); - switch (by_get_pb_statu()) { + ips200_show_string(0, 0, "button status:"); + // ips200_show_uint(104, 0, by_get_rb_status(), 1); + switch (by_get_rb_status()) { case 1: ips200_show_string(104, 0, "press"); break; @@ -45,7 +50,7 @@ void by_ips_show(void) ips200_show_float(46, 32, eulerAngle.pitch, 3, 2); ips200_show_float(46, 48, eulerAngle.roll, 3, 2); ips200_show_float(46, 64, eulerAngle.yaw, 3, 2); - // ips200_show_float(46 , 32, icm_data.gyro_x, 2, 2); + // ips200_show_float(46 , 32, icm_data.gyro_x, 2, 2); // ips200_show_float(106, 32, icm_data.gyro_y, 2, 2); // ips200_show_float(166, 32, icm_data.gyro_z, 2, 2); ips200_show_float(46, 80, imu660ra_temperature, 2, 2); diff --git a/app/by_rt_button.h b/app/by_rt_button.h new file mode 100644 index 0000000..25e5699 --- /dev/null +++ b/app/by_rt_button.h @@ -0,0 +1,17 @@ +#ifndef _BY_RT_BUTTON_H__ +#define _BY_RT_BUTTON_H__ + +#include "stdio.h" +#include "ch32v30x.h" +#define ROTATE_BUTTON_PRESS 1 +#define ROTATE_BUTTON_FORWARD 2 +#define ROTATE_BUTTON_BACKWARD 3 + +extern uint8_t rotate_button; + +extern void by_exit_init(void); +extern void by_gpio_init(void); +extern uint8_t by_get_rb_status(void); +extern void by_ips_show(void); + +#endif \ No newline at end of file diff --git a/app/isr.c b/app/isr.c index ce1e22e..4fe8bd1 100644 --- a/app/isr.c +++ b/app/isr.c @@ -2,11 +2,11 @@ * CH32V307VCT6 Opensourec Library CH32V307VCT6 Դ⣩һڹٷ SDK ӿڵĵԴ * Copyright (c) 2022 SEEKFREE ɿƼ * - * ļCH32V307VCT6 Դһ + * ļ CH32V307VCT6 Դһ * * CH32V307VCT6 Դ - * Ըᷢ GPLGNU General Public License GNUͨù֤ - * GPL ĵ3棨 GPL3.0ѡģκκİ汾·/޸ + * Ըᷢ GPLGNU General Public License GNU ͨù֤ + * GPL ĵ 3 棨 GPL3.0ѡģκκİ汾·/޸ * * Դķϣܷãδκεı֤ * ûԻʺض;ı֤ @@ -30,11 +30,12 @@ * * ޸ļ¼ * ע - * 2022-09-15 W first version + * 2022-09-15 W first version ********************************************************************************************************************/ #include "zf_common_headfile.h" -#include "by_pt_button.h" +#include "by_rt_button.h" +#include "by_imu.h" void NMI_Handler(void) __attribute__((interrupt())); void HardFault_Handler(void) __attribute__((interrupt())); @@ -197,10 +198,10 @@ void EXTI9_5_IRQHandler(void) if (SET == EXTI_GetITStatus(EXTI_Line9)) { if (SET == gpio_get_level(E10)) { - potate_button = POTATE_BUTTOM_BACKWARD; + rotate_button = ROTATE_BUTTON_BACKWARD; } else { - potate_button = POTATE_BUTTOM_FOREWARD; + rotate_button = ROTATE_BUTTON_FORWARD; } EXTI_ClearITPendingBit(EXTI_Line9); } @@ -220,7 +221,7 @@ void EXTI15_10_IRQHandler(void) system_delay_us(200); if (SET == !gpio_get_level(E11)) { - potate_button = POTATE_BUTTOM_PRESS; + rotate_button = ROTATE_BUTTON_PRESS; } EXTI_ClearITPendingBit(EXTI_Line11); } diff --git a/app/main.c b/app/main.c index ba8a864..2883964 100644 --- a/app/main.c +++ b/app/main.c @@ -1,29 +1,29 @@ /********************************************************************************************************************* -* CH32V307VCT6 Opensourec Library 即(CH32V307VCT6 开源库)是一个基于官方 SDK 接口的第三方开源库 -* Copyright (c) 2022 SEEKFREE 逐飞科技 -* -* 本文件是 CH32V307VCT6 开源库的一部分 -* -* CH32V307VCT6 开源库 是免费软件 -* 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU 通用公共许可证)的条款 -* 即 GPL 的第 3 版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它 -* -* 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证 -* 甚至没有隐含的适销性或适合特定用途的保证 -* 更多细节请参见 GPL -* -* 您应该在收到本开源库的同时收到一份 GPL 的副本 -* 如果没有,请参阅 -* -* 额外注明: -* 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本 -* 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中 -* 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件 -* 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明) -********************************************************************************************************************/ + * CH32V307VCT6 Opensourec Library 即(CH32V307VCT6 开源库)是一个基于官方 SDK 接口的第三方开源库 + * Copyright (c) 2022 SEEKFREE 逐飞科技 + * + * 本文件是 CH32V307VCT6 开源库的一部分 + * + * CH32V307VCT6 开源库 是免费软件 + * 您可以根据自由软件基金会发布的 GPL(GNU General Public License,即 GNU 通用公共许可证)的条款 + * 即 GPL 的第 3 版(即 GPL3.0)或(您选择的)任何后来的版本,重新发布和/或修改它 + * + * 本开源库的发布是希望它能发挥作用,但并未对其作任何的保证 + * 甚至没有隐含的适销性或适合特定用途的保证 + * 更多细节请参见 GPL + * + * 您应该在收到本开源库的同时收到一份 GPL 的副本 + * 如果没有,请参阅 + * + * 额外注明: + * 本开源库使用 GPL3.0 开源许可证协议 以上许可申明为译文版本 + * 许可申明英文版在 libraries/doc 文件夹下的 GPL3_permission_statement.txt 文件中 + * 许可证副本在 libraries 文件夹下 即该文件夹下的 LICENSE 文件 + * 欢迎各位使用并传播本程序 但修改内容时必须保留逐飞科技的版权声明(即本声明) + ********************************************************************************************************************/ #include "zf_common_headfile.h" #include "gl_headfile.h" -#include "by_pt_button.h" +#include "by_rt_button.h" #include "by_fan_control.h" #include "cw_servo.h" #include "./page/cw_page.h" @@ -71,6 +71,8 @@ enum track_type_e track_type = TRACK_RIGHT; int frame_count = 0; +uint16_t pwm_cnt = 500; + void img_processing(); void get_corners(); @@ -79,19 +81,36 @@ int main(void) clock_init(SYSTEM_CLOCK_120M); debug_init(); mt9v03x_init(); + pwm_init(TIM2_PWM_MAP0_CH1_A0, 50, 1000); + pwm_init(TIM2_PWM_MAP0_CH2_A1, 50, 1000); ips200_init(IPS200_TYPE_SPI); by_gpio_init(); by_exit_init(); by_pwm_init(); - cw_servo_init(); + // cw_servo_init(); // while (imu660ra_init()) // ; Page_Init(); while (1) { + // ips200_show_uint(0, 0, pwm_cnt, 6); + // uint8_t temp_status = by_get_rb_status(); + // if (2 == temp_status) { + // pwm_cnt += 50; + // } else if (3 == temp_status) { + // pwm_cnt -= 50; + // } + + // pwm_cnt = (uint16_t)clip(pwm_cnt, 500, 1000); + // by_pwm_update_duty(4000); + // pwm_set_duty(TIM2_PWM_MAP0_CH1_A0, pwm_cnt); + // pwm_set_duty(TIM2_PWM_MAP0_CH2_A1, pwm_cnt); + + // by_pwm_update_duty(pwm_cnt); + Page_Run(); - + if (mt9v03x_finish_flag) { memcpy(mt9v03x_image_copy[0], mt9v03x_image[0], (sizeof(mt9v03x_image_copy) / sizeof(uint8_t))); mt9v03x_finish_flag = 0; diff --git a/app/page/cw_page.c b/app/page/cw_page.c index d948d63..8716b8e 100644 --- a/app/page/cw_page.c +++ b/app/page/cw_page.c @@ -1,9 +1,11 @@ #include "cw_page.h" +#include "by_rt_button.h" + PAGE_LIST pagelist[page_max]; static uint8_t page_busy = 0; -static int8_t now_page = page_menu; -static int8_t new_page = page_menu; +static int8_t now_page = page_menu; +static int8_t new_page = page_menu; /** * @brief 注册一个基本页面,包含一个初始化函数,循环函数,退出函数,事件函数 @@ -16,12 +18,13 @@ static int8_t new_page = page_menu; * @retval 无 */ void Page_Register(uint8_t pageID, char *pageText, - CallbackFunction_t setupCallback, CallbackFunction_t loopCallback, - CallbackFunction_t exitCallback, EventFunction_t eventCallback) { - pagelist[pageID].Text = pageText; + CallbackFunction_t setupCallback, CallbackFunction_t loopCallback, + CallbackFunction_t exitCallback, EventFunction_t eventCallback) +{ + pagelist[pageID].Text = pageText; pagelist[pageID].SetupCallback = setupCallback; - pagelist[pageID].LoopCallback = loopCallback; - pagelist[pageID].ExitCallback = exitCallback; + pagelist[pageID].LoopCallback = loopCallback; + pagelist[pageID].ExitCallback = exitCallback; pagelist[pageID].EventCallback = eventCallback; } @@ -30,7 +33,8 @@ void Page_Register(uint8_t pageID, char *pageText, * @param event: 事件编号 * @retval 无 */ -void Page_EventTransmit(unsigned char event) { +void Page_EventTransmit(unsigned char event) +{ /*将事件传递到当前页面*/ if (pagelist[now_page].EventCallback != 0) pagelist[now_page].EventCallback(event); @@ -41,7 +45,8 @@ void Page_EventTransmit(unsigned char event) { * @param pageID:页面号 * @retval 1:成功 0:失败 */ -void Page_Shift(unsigned char pageID) { +void Page_Shift(unsigned char pageID) +{ if (page_busy == 0) { new_page = pageID; } @@ -51,7 +56,8 @@ void Page_Shift(unsigned char pageID) { * @brief 关闭当前页面 * */ -void Page_CloseCurrentPage() { +void Page_CloseCurrentPage() +{ pagelist[now_page].ExitCallback(); } @@ -59,16 +65,18 @@ void Page_CloseCurrentPage() { * @brief 打开当前页面 * */ -void Page_OpenCurrentPage() { +void Page_OpenCurrentPage() +{ pagelist[now_page].SetupCallback(); } /** * @brief 获取页面状态 * - * @return uint8_t 页面忙返回1 空闲返回0 + * @return uint8_t 页面忙返回 1 空闲返回 0 */ -uint8_t Page_GetStatus(void) { +uint8_t Page_GetStatus(void) +{ if (page_busy) return 1; else @@ -79,18 +87,23 @@ uint8_t Page_GetStatus(void) { * @brief 页面运行函数 * */ -void Page_Run(void) { +void Page_Run(void) +{ + uint8_t temp_status = by_get_rb_status(); // 轮询旋钮状态 + if(temp_status){ + pagelist[now_page].EventCallback(temp_status); + } if (now_page != new_page) { if (new_page >= page_max && new_page < page_menu) { new_page = page_menu; } - //执行当前页面退出回调函数 + // 执行当前页面退出回调函数 if ((pagelist[now_page].ExitCallback != 0)) { pagelist[now_page].ExitCallback(); } - //执行新页面构造回调函数 + // 执行新页面构造回调函数 if (pagelist[new_page].SetupCallback != 0) { pagelist[new_page].SetupCallback(); } @@ -99,7 +112,7 @@ void Page_Run(void) { } if (page_busy == 0) { - //执行循环函数 + // 执行循环函数 pagelist[now_page].LoopCallback(); } } @@ -108,13 +121,15 @@ void Page_Run(void) { * @brief 页面初始化(注册,构建) //ATTENTION 在此处添加新加入的页面 * */ -void Page_Init(void) { +void Page_Init(void) +{ PAGE_REG(page_menu); + PAGE_REG(page_rtcam); // PAGE_REG(page_argv); // PAGE_REG(page_sys); // PAGE_REG(page_run); Page_Shift(page_menu); - pagelist[now_page].SetupCallback(); //先构建一遍 + pagelist[now_page].SetupCallback(); // 先构建一遍 } diff --git a/app/page/cw_page.h b/app/page/cw_page.h index cd4f20e..dc9e15f 100644 --- a/app/page/cw_page.h +++ b/app/page/cw_page.h @@ -13,10 +13,13 @@ #include "zf_common_headfile.h" +#include "by_rt_button.h" + enum PageID { PAGE_NULL = -1, //...... page_menu, + page_rtcam, // page_argv, // page_sys, // page_run, @@ -25,9 +28,9 @@ enum PageID { }; typedef enum page_event{ - page_event_forward, - page_event_backward, - page_event_press + page_event_forward = ROTATE_BUTTON_FORWARD, + page_event_backward = ROTATE_BUTTON_BACKWARD, + page_event_press = ROTATE_BUTTON_PRESS } page_event; typedef void (*CallbackFunction_t)(void); diff --git a/app/page/cw_page_menu.c b/app/page/cw_page_menu.c index 4296ba6..ea5b939 100644 --- a/app/page/cw_page_menu.c +++ b/app/page/cw_page_menu.c @@ -7,8 +7,8 @@ static char Text[] = "Menu"; -static int8_t Curser = 1; // 定义光标位置 -static int8_t Curser_Last = 1; // 定义光标位置 +static int8_t Curser = LINE_HEAD; // 定义光标位置 +static int8_t Curser_Last = LINE_HEAD; // 定义光标位置 static void Print_Menu_p(void); /*************************************************************************************** * @@ -44,7 +44,6 @@ static void Exit() */ static void Loop() { - Show_Marked_Image(); } /** @@ -101,7 +100,7 @@ static void Print_Menu_p(void) // SCREEN_showstr_style(5 * 8, 0, RED, WHITE, "#### MAIN MENU ####"); ips200_show_string(0, 0, Text); for (uint8_t i = page_menu + 1; i < page_max; i++) { - ips200_show_string(8, i, pagelist[i].Text); + ips200_show_string(10, i * 16, pagelist[i].Text); // SCREEN_showstr(8, i, pagelist[i].Text); } } diff --git a/app/page/cw_page_rtcam.c b/app/page/cw_page_rtcam.c index 969963d..d23ccfa 100644 --- a/app/page/cw_page_rtcam.c +++ b/app/page/cw_page_rtcam.c @@ -2,13 +2,13 @@ #include "cw_page_ui_widget.h" #include "cw_page.h" -#define LINE_HEAD 1 -#define LINE_END 7 +#define LINE_HEAD 11 +#define LINE_END 18 static char Text[] = "RealTime Image"; -static int8_t Curser = 1; // 定义光标位置 -static int8_t Curser_Last = 1; // 定义光标位置 +static int8_t Curser = LINE_HEAD; // 定义光标位置 +static int8_t Curser_Last = LINE_HEAD; // 定义光标位置 static void Print_Menu_p(void); /*************************************************************************************** * @@ -23,7 +23,7 @@ static void Print_Menu_p(void); */ static void Setup() { - ips114_clear(); + ips200_clear(); Print_Menu_p(); Print_Curser(Curser, Curser_Last); } @@ -44,6 +44,7 @@ static void Exit() */ static void Loop() { + Show_Marked_Image(); } /** @@ -99,8 +100,4 @@ static void Print_Menu_p(void) { // SCREEN_showstr_style(5 * 8, 0, RED, WHITE, "#### MAIN MENU ####"); ips200_show_string(0, 0, Text); - for (uint8_t i = page_menu + 1; i < page_max; i++) { - ips200_show_string(8, i, pagelist[i].Text); - // SCREEN_showstr(8, i, pagelist[i].Text); - } } diff --git a/libraries/zf_common/zf_common_font.c b/libraries/zf_common/zf_common_font.c index 094730a..e4e6515 100644 --- a/libraries/zf_common/zf_common_font.c +++ b/libraries/zf_common/zf_common_font.c @@ -2,11 +2,11 @@ * CH32V307VCT6 Opensourec Library CH32V307VCT6 Դ⣩һڹٷ SDK ӿڵĵԴ * Copyright (c) 2022 SEEKFREE ɿƼ * -* ļCH32V307VCT6 Դһ +* ļ CH32V307VCT6 Դһ * * CH32V307VCT6 Դ -* Ըᷢ GPLGNU General Public License GNUͨù֤ -* GPL ĵ3棨 GPL3.0ѡģκκİ汾·/޸ +* Ըᷢ GPLGNU General Public License GNU ͨù֤ +* GPL ĵ 3 棨 GPL3.0ѡģκκİ汾·/޸ * * Դķϣܷãδκεı֤ * ûԻʺض;ı֤ @@ -30,7 +30,7 @@ * * ޸ļ¼ * ע -* 2022-09-15 W first version +* 2022-09-15 W first version ********************************************************************************************************************/ #include "zf_common_font.h" @@ -93,7 +93,8 @@ const uint8 ascii_font_8x16[][16]= {0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00}, // ; 27 {0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00}, // < 28 {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00}, // = 29 - {0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00}, // > 30 +// {0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00}, // > 30 + {0xFE,0xFC,0xF8,0xF0,0xE0,0xC0,0x80,0x00,0x7F,0x3F,0x1F,0x0F,0x07,0x03,0x01,0x00}, // > 30 {0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00}, // ? 31 {0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00}, // @ 32 {0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20}, // A 33 @@ -274,7 +275,7 @@ const uint8 ascii_font_6x8[][6] = }; //------------------------------------------------------------------------------------------------------------------- -// ʹPCtoLCD2002ȡģ +// ʹ PCtoLCD2002 ȡģ // 롢ʽ˳ 16*16 //------------------------------------------------------------------------------------------------------------------- const uint8 chinese_test[8][16] = @@ -290,7 +291,7 @@ const uint8 chinese_test[8][16] = }; //------------------------------------------------------------------------------------------------------------------- -// ʹPCtoLCD2002ȡģ +// ʹ PCtoLCD2002 ȡģ // 롢ʽ 16*16 //------------------------------------------------------------------------------------------------------------------- const uint8 oled_16x16_chinese[][16]= @@ -305,10 +306,10 @@ const uint8 oled_16x16_chinese[][16]= {0x04,0x44,0x82,0x7F,0x01,0x80,0x80,0x40,0x43,0x2C,0x10,0x28,0x46,0x81,0x80,0x00},/*"",3*/ }; -//16λBMP 240*80 ɿƼlogoͼȡģ -//Image2LCDȡģѡ +//16 λ BMP 240*80 ɿƼ logo ͼȡģ +//Image2LCD ȡģѡ //ˮƽɨ -//16λ +//16 λ //240*80 //ͼͷ // From 8fc8049eb8e3d6979587458cc50b8866d07c33e0 Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Thu, 4 Jan 2024 22:43:15 +0800 Subject: [PATCH 2/5] =?UTF-8?q?pref:=20=E6=9B=B4=E6=8D=A2=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E5=B1=8F=E6=96=87=E5=AD=97=E5=92=8C=E8=83=8C=E6=99=AF?= =?UTF-8?q?=E9=A2=9C=E8=89=B2,=E4=BD=BF=E5=85=B6=E6=9B=B4=E7=AC=A6?= =?UTF-8?q?=E5=90=88=E8=A7=86=E8=A7=89=E4=BC=A0=E8=BE=BE=E7=9A=84=E6=B8=85?= =?UTF-8?q?=E6=99=B0=E5=BA=A6=E8=A6=81=E6=B1=82=20fix:=20=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3page=5Fmenu=E4=B8=AD=E9=94=99=E8=AF=AF=E8=B0=83?= =?UTF-8?q?=E7=94=A8114=E6=B8=85=E5=B1=8F=E5=87=BD=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=20fix:=20=E5=88=A0=E9=99=A4page=5Frtcam?= =?UTF-8?q?=E4=B8=ADpage=5Fevent=5Fpress=E4=BA=8B=E4=BB=B6=E7=9A=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/page/cw_page_menu.c | 2 +- app/page/cw_page_rtcam.c | 3 --- libraries/zf_device/zf_device_ips200.h | 4 ++-- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/app/page/cw_page_menu.c b/app/page/cw_page_menu.c index ea5b939..fa77b32 100644 --- a/app/page/cw_page_menu.c +++ b/app/page/cw_page_menu.c @@ -23,7 +23,7 @@ static void Print_Menu_p(void); */ static void Setup() { - ips114_clear(); + ips200_clear(); Print_Menu_p(); Print_Curser(Curser, Curser_Last); } diff --git a/app/page/cw_page_rtcam.c b/app/page/cw_page_rtcam.c index d23ccfa..6a5d910 100644 --- a/app/page/cw_page_rtcam.c +++ b/app/page/cw_page_rtcam.c @@ -62,9 +62,6 @@ static void Event(page_event event) } else if (page_event_backward == event) { Curser++; // 光标下移 } else if (page_event_press == event) { - if (page_max > Curser && page_menu < Curser) { - Page_Shift(Curser); // 切换到光标选中的页面 - } } if (Curser < LINE_HEAD) { diff --git a/libraries/zf_device/zf_device_ips200.h b/libraries/zf_device/zf_device_ips200.h index 8e73b41..3362ed9 100644 --- a/libraries/zf_device/zf_device_ips200.h +++ b/libraries/zf_device/zf_device_ips200.h @@ -115,8 +115,8 @@ // --------------------双排 SPI 接口两寸屏幕引脚定义--------------------// #define IPS200_DEFAULT_DISPLAY_DIR (IPS200_PORTAIT) // 默认的显示方向 -#define IPS200_DEFAULT_PENCOLOR (RGB565_RED ) // 默认的画笔颜色 -#define IPS200_DEFAULT_BGCOLOR (RGB565_WHITE ) // 默认的背景颜色 +#define IPS200_DEFAULT_PENCOLOR (RGB565_BLACK ) // 默认的画笔颜色 +#define IPS200_DEFAULT_BGCOLOR (RGB565_YELLOW ) // 默认的背景颜色 #define IPS200_DEFAULT_DISPLAY_FONT (IPS200_8X16_FONT) // 默认的字体模式 // 控制语句 From b4b265cdef00ce26c77936a61063b6e9b5c5fd1b Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Fri, 5 Jan 2024 09:13:10 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9systick=5Fdelay=E6=96=B9?= =?UTF-8?q?=E5=BC=8F=E4=B8=BA=E6=9F=A5=E8=AF=A2=E6=AF=94=E8=BE=83,?= =?UTF-8?q?=E4=BF=9D=E7=95=99systick=E7=B4=AF=E5=8A=A0=E5=80=BC=E4=BD=9C?= =?UTF-8?q?=E4=B8=BA=E6=97=B6=E9=97=B4=E6=88=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/main.c | 1 + libraries/zf_driver/zf_driver_delay.c | 110 ++++++++++++++------------ libraries/zf_driver/zf_driver_delay.h | 71 +++++++++-------- 3 files changed, 97 insertions(+), 85 deletions(-) diff --git a/app/main.c b/app/main.c index 2883964..1c9efa3 100644 --- a/app/main.c +++ b/app/main.c @@ -79,6 +79,7 @@ void get_corners(); int main(void) { clock_init(SYSTEM_CLOCK_120M); + system_delay_init(); debug_init(); mt9v03x_init(); pwm_init(TIM2_PWM_MAP0_CH1_A0, 50, 1000); diff --git a/libraries/zf_driver/zf_driver_delay.c b/libraries/zf_driver/zf_driver_delay.c index 6cb3568..cc23f1a 100644 --- a/libraries/zf_driver/zf_driver_delay.c +++ b/libraries/zf_driver/zf_driver_delay.c @@ -1,37 +1,37 @@ /********************************************************************************************************************* -* CH32V307VCT6 Opensourec Library CH32V307VCT6 Դ⣩һڹٷ SDK ӿڵĵԴ -* Copyright (c) 2022 SEEKFREE ɿƼ -* -* ļCH32V307VCT6 Դһ -* -* CH32V307VCT6 Դ -* Ըᷢ GPLGNU General Public License GNUͨù֤ -* GPL ĵ3棨 GPL3.0ѡģκκİ汾·/޸ -* -* Դķϣܷãδκεı֤ -* ûԻʺض;ı֤ -* ϸμ GPL -* -* ӦյԴͬʱյһ GPL ĸ -* ûУ -* -* ע -* Դʹ GPL3.0 Դ֤Э Ϊİ汾 -* Ӣİ libraries/doc ļµ GPL3_permission_statement.txt ļ -* ֤ libraries ļ ļµ LICENSE ļ -* ӭλʹò ޸ʱ뱣ɿƼİȨ -* -* ļ zf_driver_delay -* ˾ ɶɿƼ޹˾ -* 汾Ϣ 鿴 libraries/doc ļ version ļ 汾˵ -* MounRiver Studio V1.8.1 -* ƽ̨ CH32V307VCT6 -* https://seekfree.taobao.com/ -* -* ޸ļ¼ -* ע -* 2022-09-15 W first version -********************************************************************************************************************/ + * CH32V307VCT6 Opensourec Library CH32V307VCT6 Դ⣩һڹٷ SDK ӿڵĵԴ + * Copyright (c) 2022 SEEKFREE ɿƼ + * + * ļ CH32V307VCT6 Դһ + * + * CH32V307VCT6 Դ + * Ըᷢ GPLGNU General Public License GNU ͨù֤ + * GPL ĵ 3 棨 GPL3.0ѡģκκİ汾·/޸ + * + * Դķϣܷãδκεı֤ + * ûԻʺض;ı֤ + * ϸμ GPL + * + * ӦյԴͬʱյһ GPL ĸ + * ûУ + * + * ע + * Դʹ GPL3.0 Դ֤Э Ϊİ汾 + * Ӣİ libraries/doc ļµ GPL3_permission_statement.txt ļ + * ֤ libraries ļ ļµ LICENSE ļ + * ӭλʹò ޸ʱ뱣ɿƼİȨ + * + * ļ zf_driver_delay + * ˾ ɶɿƼ޹˾ + * 汾Ϣ 鿴 libraries/doc ļ version ļ 汾˵ + * MounRiver Studio V1.8.1 + * ƽ̨ CH32V307VCT6 + * https://seekfree.taobao.com/ + * + * ޸ļ¼ + * ע + * 2022-09-15 W first version + ********************************************************************************************************************/ #include "ch32v30x.h" @@ -46,21 +46,23 @@ // ʹʾ system_delay_ms(100); // עϢ //------------------------------------------------------------------------------------------------------------------- -void system_delay_ms (uint32 num) +void system_delay_ms(uint32 num) { - SysTick->SR &= ~(1 << 0); + // SysTick->SR &= ~(1 << 0); + // SysTick->CMP = (uint64_t)(system_clock / 8000) * num; + // SysTick->CTLR |= (1 << 4); + // SysTick->CTLR |= (1 << 5) | (1 << 0); - SysTick->CMP = (uint64_t)(system_clock/8000) * num; - SysTick->CTLR |= (1 << 4); - SysTick->CTLR |= (1 << 5) | (1 << 0); + // while ((SysTick->SR & (1 << 0)) != (1 << 0)) + // ; - while((SysTick->SR & (1 << 0)) != (1 << 0)); - - SysTick->CTLR &= ~(1 << 0); + // SysTick->CTLR &= ~(1 << 0); + while (num--) { + system_delay_us(1000); + } } - //------------------------------------------------------------------------------------------------------------------- // system ʱ us // ˵ time Ҫʱʱ us @@ -68,18 +70,26 @@ void system_delay_ms (uint32 num) // ʹʾ system_delay_us(100); // עϢ ڳת ʱֵ߳һЩ //------------------------------------------------------------------------------------------------------------------- -void system_delay_us (uint32 num) +void system_delay_us(uint32 num) { - SysTick->SR &= ~(1 << 0); + // SysTick->SR &= ~(1 << 0); + // SysTick->CMP = (uint64_t)(system_clock/8000000) * num; + // SysTick->CTLR |= (1 << 4); + // SysTick->CTLR |= (1 << 5) | (1 << 0); - SysTick->CMP = (uint64_t)(system_clock/8000000) * num; - SysTick->CTLR |= (1 << 4); - SysTick->CTLR |= (1 << 5) | (1 << 0); + // while((SysTick->SR & (1 << 0)) != (1 << 0)); - while((SysTick->SR & (1 << 0)) != (1 << 0)); + // SysTick->CTLR &= ~(1 << 0); - SysTick->CTLR &= ~(1 << 0); + uint64_t time_start = SysTick->CNT; + uint64_t time_delta = (uint64_t)num * (uint64_t)(system_clock / 8000000); + + while (time_delta > (SysTick->CNT - time_start)) { + } } - +void system_delay_init(void) +{ + SysTick->CTLR |= 0x21; +} \ No newline at end of file diff --git a/libraries/zf_driver/zf_driver_delay.h b/libraries/zf_driver/zf_driver_delay.h index aee667f..cba5ad1 100644 --- a/libraries/zf_driver/zf_driver_delay.h +++ b/libraries/zf_driver/zf_driver_delay.h @@ -1,37 +1,37 @@ /********************************************************************************************************************* -* CH32V307VCT6 Opensourec Library CH32V307VCT6 Դ⣩һڹٷ SDK ӿڵĵԴ -* Copyright (c) 2022 SEEKFREE ɿƼ -* -* ļCH32V307VCT6 Դһ -* -* CH32V307VCT6 Դ -* Ըᷢ GPLGNU General Public License GNUͨù֤ -* GPL ĵ3棨 GPL3.0ѡģκκİ汾·/޸ -* -* Դķϣܷãδκεı֤ -* ûԻʺض;ı֤ -* ϸμ GPL -* -* ӦյԴͬʱյһ GPL ĸ -* ûУ -* -* ע -* Դʹ GPL3.0 Դ֤Э Ϊİ汾 -* Ӣİ libraries/doc ļµ GPL3_permission_statement.txt ļ -* ֤ libraries ļ ļµ LICENSE ļ -* ӭλʹò ޸ʱ뱣ɿƼİȨ -* -* ļ zf_driver_delay -* ˾ ɶɿƼ޹˾ -* 汾Ϣ 鿴 libraries/doc ļ version ļ 汾˵ -* MounRiver Studio V1.8.1 -* ƽ̨ CH32V307VCT6 -* https://seekfree.taobao.com/ -* -* ޸ļ¼ -* ע -* 2022-09-15 W first version -********************************************************************************************************************/ + * CH32V307VCT6 Opensourec Library CH32V307VCT6 Դ⣩һڹٷ SDK ӿڵĵԴ + * Copyright (c) 2022 SEEKFREE ɿƼ + * + * ļCH32V307VCT6 Դһ + * + * CH32V307VCT6 Դ + * Ըᷢ GPLGNU General Public License GNUͨù֤ + * GPL ĵ3棨 GPL3.0ѡģκκİ汾·/޸ + * + * Դķϣܷãδκεı֤ + * ûԻʺض;ı֤ + * ϸμ GPL + * + * ӦյԴͬʱյһ GPL ĸ + * ûУ + * + * ע + * Դʹ GPL3.0 Դ֤Э Ϊİ汾 + * Ӣİ libraries/doc ļµ GPL3_permission_statement.txt ļ + * ֤ libraries ļ ļµ LICENSE ļ + * ӭλʹò ޸ʱ뱣ɿƼİȨ + * + * ļ zf_driver_delay + * ˾ ɶɿƼ޹˾ + * 汾Ϣ 鿴 libraries/doc ļ version ļ 汾˵ + * MounRiver Studio V1.8.1 + * ƽ̨ CH32V307VCT6 + * https://seekfree.taobao.com/ + * + * ޸ļ¼ + * ע + * 2022-09-15 W first version + ********************************************************************************************************************/ #ifndef _zf_driver_delay_h #define _zf_driver_delay_h @@ -39,7 +39,8 @@ #include "zf_common_clock.h" #include "zf_common_typedef.h" -void system_delay_ms (uint32 time); -void system_delay_us (uint32 time); +void system_delay_ms(uint32 time); +void system_delay_us(uint32 time); +void system_delay_init(void); #endif From 535cb372dfc0fef596443d090c9f3021e57bf8f0 Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Fri, 5 Jan 2024 15:55:17 +0800 Subject: [PATCH 4/5] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=97=8B?= =?UTF-8?q?=E8=BD=AC=E7=BC=96=E7=A0=81=E5=99=A8=E6=8C=89=E9=94=AE=E9=95=BF?= =?UTF-8?q?=E7=9F=AD=E6=8C=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/by_rt_button.c | 2 +- app/by_rt_button.h | 12 +++-- app/isr.c | 75 ++++++++++++++++----------- app/page/cw_page.h | 7 +-- app/page/cw_page_menu.c | 2 +- app/page/cw_page_rtcam.c | 5 +- libraries/zf_driver/zf_driver_delay.c | 6 +++ libraries/zf_driver/zf_driver_delay.h | 4 ++ 8 files changed, 75 insertions(+), 38 deletions(-) diff --git a/app/by_rt_button.c b/app/by_rt_button.c index c9147cd..40b5471 100644 --- a/app/by_rt_button.c +++ b/app/by_rt_button.c @@ -11,7 +11,7 @@ void by_gpio_init(void) void by_exit_init(void) { exti_init(E9, EXTI_TRIGGER_FALLING); - exti_init(E11, EXTI_TRIGGER_FALLING); + exti_init(E11, EXTI_TRIGGER_BOTH); } /** diff --git a/app/by_rt_button.h b/app/by_rt_button.h index 25e5699..e124b70 100644 --- a/app/by_rt_button.h +++ b/app/by_rt_button.h @@ -3,9 +3,15 @@ #include "stdio.h" #include "ch32v30x.h" -#define ROTATE_BUTTON_PRESS 1 -#define ROTATE_BUTTON_FORWARD 2 -#define ROTATE_BUTTON_BACKWARD 3 +// #define rotate_button_press_short 1 +// #define rotate_button_forward 2 +// #define rotate_button_backward 3 +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; extern uint8_t rotate_button; diff --git a/app/isr.c b/app/isr.c index 4fe8bd1..1ddb4cb 100644 --- a/app/isr.c +++ b/app/isr.c @@ -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 ж Ԥжϴ *----------------- - tof_module_exti_handler(); - // -----------------* ToF INT ж Ԥжϴ *----------------- - // ˴дû (A13/B13..E13) Ŵ + if (SET == EXTI_GetITStatus(EXTI_Line12)) { + EXTI_ClearITPendingBit(EXTI_Line12); + } + if (SET == EXTI_GetITStatus(EXTI_Line13)) { + // -----------------* ToF INT ж Ԥжϴ *----------------- + tof_module_exti_handler(); + // -----------------* ToF INT ж Ԥжϴ *----------------- + // ˴дû (A13/B13..E13) Ŵ - // ˴дû (A13/B13..E13) Ŵ + // ˴дû (A13/B13..E13) Ŵ - EXTI_ClearITPendingBit(EXTI_Line13); - } - if (SET == EXTI_GetITStatus(EXTI_Line14)) { - // -----------------* DM1XA ź Ԥжϴ *----------------- - dm1xa_light_callback(); - // -----------------* DM1XA ź Ԥжϴ *----------------- - EXTI_ClearITPendingBit(EXTI_Line14); - } - if (SET == EXTI_GetITStatus(EXTI_Line15)) { - // -----------------* DM1XA /ź Ԥжϴ *----------------- - dm1xa_sound_callback(); - // -----------------* DM1XA /ź Ԥжϴ *----------------- - EXTI_ClearITPendingBit(EXTI_Line15); + EXTI_ClearITPendingBit(EXTI_Line13); + } + if (SET == EXTI_GetITStatus(EXTI_Line14)) { + // -----------------* DM1XA ź Ԥжϴ *----------------- + dm1xa_light_callback(); + // -----------------* DM1XA ź Ԥжϴ *----------------- + EXTI_ClearITPendingBit(EXTI_Line14); + } + if (SET == EXTI_GetITStatus(EXTI_Line15)) { + // -----------------* DM1XA /ź Ԥжϴ *----------------- + dm1xa_sound_callback(); + // -----------------* DM1XA /ź Ԥжϴ *----------------- + EXTI_ClearITPendingBit(EXTI_Line15); + } } } diff --git a/app/page/cw_page.h b/app/page/cw_page.h index dc9e15f..100b9bb 100644 --- a/app/page/cw_page.h +++ b/app/page/cw_page.h @@ -28,9 +28,10 @@ enum PageID { }; typedef enum page_event{ - page_event_forward = ROTATE_BUTTON_FORWARD, - page_event_backward = ROTATE_BUTTON_BACKWARD, - page_event_press = ROTATE_BUTTON_PRESS + page_event_forward = rotate_button_forward, + page_event_backward = rotate_button_backward, + page_event_press_short = rotate_button_press_short, + page_event_press_long = rotate_button_press_long, } page_event; typedef void (*CallbackFunction_t)(void); diff --git a/app/page/cw_page_menu.c b/app/page/cw_page_menu.c index fa77b32..0a85302 100644 --- a/app/page/cw_page_menu.c +++ b/app/page/cw_page_menu.c @@ -60,7 +60,7 @@ static void Event(page_event event) Curser--; // 光标上移 } else if (page_event_backward == event) { Curser++; // 光标下移 - } else if (page_event_press == event) { + } else if (page_event_press_short == event) { if (page_max > Curser && page_menu < Curser) { Page_Shift(Curser); // 切换到光标选中的页面 } diff --git a/app/page/cw_page_rtcam.c b/app/page/cw_page_rtcam.c index 6a5d910..db59b3d 100644 --- a/app/page/cw_page_rtcam.c +++ b/app/page/cw_page_rtcam.c @@ -61,7 +61,10 @@ static void Event(page_event event) Curser--; // 光标上移 } else if (page_event_backward == event) { Curser++; // 光标下移 - } else if (page_event_press == event) { + } else if (page_event_press_short == event) { + + } else if (page_event_press_long == event) { + Page_Shift(page_menu); } if (Curser < LINE_HEAD) { diff --git a/libraries/zf_driver/zf_driver_delay.c b/libraries/zf_driver/zf_driver_delay.c index cc23f1a..24f0f3e 100644 --- a/libraries/zf_driver/zf_driver_delay.c +++ b/libraries/zf_driver/zf_driver_delay.c @@ -89,6 +89,12 @@ void system_delay_us(uint32 num) } } +uint64_t system_get_tick(void) +{ + uint64_t time_temp = SysTick->CNT; + return (time_temp); +} + void system_delay_init(void) { SysTick->CTLR |= 0x21; diff --git a/libraries/zf_driver/zf_driver_delay.h b/libraries/zf_driver/zf_driver_delay.h index cba5ad1..07fb8b0 100644 --- a/libraries/zf_driver/zf_driver_delay.h +++ b/libraries/zf_driver/zf_driver_delay.h @@ -39,8 +39,12 @@ #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); void system_delay_init(void); #endif From a3bb280c7e8b277f7131063b5c771a742fc793b2 Mon Sep 17 00:00:00 2001 From: CaoWangrenbo Date: Fri, 5 Jan 2024 16:00:06 +0800 Subject: [PATCH 5/5] =?UTF-8?q?pref:=20=E5=88=A0=E9=99=A4=E5=A4=9A?= =?UTF-8?q?=E4=BD=99=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/by_rt_button.h | 4 +--- app/isr.c | 12 +++++------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/app/by_rt_button.h b/app/by_rt_button.h index e124b70..2b84c70 100644 --- a/app/by_rt_button.h +++ b/app/by_rt_button.h @@ -3,9 +3,7 @@ #include "stdio.h" #include "ch32v30x.h" -// #define rotate_button_press_short 1 -// #define rotate_button_forward 2 -// #define rotate_button_backward 3 + typedef enum rotate_button_event{ rotate_button_press_short = 1, rotate_button_press_long = 2, diff --git a/app/isr.c b/app/isr.c index 1ddb4cb..fb875c8 100644 --- a/app/isr.c +++ b/app/isr.c @@ -218,26 +218,24 @@ void EXTI15_10_IRQHandler(void) EXTI_ClearITPendingBit(EXTI_Line10); } if (SET == EXTI_GetITStatus(EXTI_Line11)) { - static uint64_t time_fly = 0; + static uint64_t time_via = 0; 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; + time_via = system_get_tick(); } 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) { + 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_fly = 0; + time_via = 0; } EXTI_ClearITPendingBit(EXTI_Line11); }