From af9f0769b30a12f70d8a9c9c42b191a60c84aa9b Mon Sep 17 00:00:00 2001 From: bmy <2583236812@qq.com> Date: Sun, 10 Mar 2024 20:28:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E8=BD=AF=E4=BB=B6?= =?UTF-8?q?=E5=A4=8D=E4=BD=8D=E8=8F=9C=E5=8D=95=E5=92=8C=E4=B8=BB=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E4=BE=A7=E9=94=AE=E5=A4=8D=E4=BD=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 虽然侧键和硬件复位按键一样难按2333 --- app/page/page.c | 1 + app/page/page.h | 9 ++-- app/page/page_menu.c | 3 ++ app/page/page_reset.c | 100 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 app/page/page_reset.c diff --git a/app/page/page.c b/app/page/page.c index 877b879..c05a1c9 100644 --- a/app/page/page.c +++ b/app/page/page.c @@ -132,6 +132,7 @@ void Page_Init(void) PAGE_REG(page_param1, "Param1"); PAGE_REG(page_param2, "param2"); PAGE_REG(page_dparam, "dparam"); + PAGE_REG(page_reset, "reset"); // PAGE_REG(page_argv); // PAGE_REG(page_sys); // PAGE_REG(page_run); diff --git a/app/page/page.h b/app/page/page.h index 7e18f75..80ebe34 100644 --- a/app/page/page.h +++ b/app/page/page.h @@ -23,6 +23,7 @@ enum PageID { page_param1, page_param2, page_dparam, + page_reset, // page_argv, // page_sys, // page_run, @@ -35,6 +36,7 @@ typedef enum page_event { page_event_backward = button_event_down, page_event_press_short = button_event_center_sp, page_event_press_long = button_event_center_lp, + page_event_side = button_event_side, } page_event; typedef void (*CallbackFunction_t)(void); @@ -48,15 +50,14 @@ typedef struct { } PAGE_LIST; // 页面注册函数 -#define PAGE_REG(_name_, _text_) \ +#define PAGE_REG(_name_, _text_) \ do { \ extern void PageRegister_##_name_(unsigned char pageID); \ PageRegister_##_name_(_name_); \ } while (0); \ - pagelist[_name_].Text = _text_ ; + pagelist[_name_].Text = _text_; - -void Page_Register(uint8_t pageID, +void Page_Register(uint8_t pageID, CallbackFunction_t setupCallback, CallbackFunction_t loopCallback, CallbackFunction_t exitCallback, EventFunction_t eventCallback); diff --git a/app/page/page_menu.c b/app/page/page_menu.c index 687499b..9da34ff 100644 --- a/app/page/page_menu.c +++ b/app/page/page_menu.c @@ -64,6 +64,9 @@ static void Event(page_event event) if (page_max > Curser && page_menu < Curser) { Page_Shift(Curser); // 切换到光标选中的页面 } + } else if (page_event_side == event) { + // 主菜单长按产生软件复位 + NVIC_SystemReset(); } if (Curser < LINE_HEAD) { diff --git a/app/page/page_reset.c b/app/page/page_reset.c new file mode 100644 index 0000000..7ec6f57 --- /dev/null +++ b/app/page/page_reset.c @@ -0,0 +1,100 @@ +#include "zf_common_headfile.h" +#include "page_ui_widget.h" +#include "page.h" + +#define LINE_HEAD 1 +#define LINE_END 7 + +static char Text[] = "Reset"; + +static int8_t Curser = LINE_HEAD; // 定义光标位置 +static int8_t Curser_Last = LINE_HEAD; // 定义光标位置 +static void Print_Menu_p(void); +/*************************************************************************************** + * + * 以下为页面模板函数 + * + ***************************************************************************************/ + +/** + * @brief 页面初始化事件 + * @param 无 + * @retval 无 + */ +static void Setup() +{ + ips200_clear(); + Print_Menu_p(); + Print_Curser(Curser, Curser_Last, RGB565_PURPLE); +} + +/** + * @brief 页面退出事件 + * @param 无 + * @retval 无 + */ +static void Exit() +{ +} + +/** + * @brief 页面循环执行的内容 + * @param 无 + * @retval 无 + */ +static void Loop() +{ +} + +/** + * @brief 页面事件 + * @param btn:发出事件的按键 + * @param event:事件编号 + * @retval 无 + */ +static void Event(page_event event) +{ + Curser_Last = Curser; + + if (page_event_forward == event) { + // Curser++; // 光标上移 + } else if (page_event_backward == event) { + // Curser--; // 光标下移 + } else if (page_event_press_long == event) { + NVIC_SystemReset(); + } + + if (Curser < LINE_HEAD) { + Curser = LINE_END; + } else if (Curser > LINE_END) { + Curser = LINE_HEAD; + } + + Print_Curser(Curser, Curser_Last, RGB565_PURPLE); +} + +/** + * @brief 页面注册函数 + * + * @param pageID + */ +void PageRegister_page_reset(unsigned char pageID) +{ + Page_Register(pageID, Setup, Loop, Exit, Event); +} + +/*************************************************************************************** + * + * 以下为页面自定义功能函数 + * + ***************************************************************************************/ + +/** + * @brief 打印菜单项 + * + */ +static void Print_Menu_p(void) +{ + ips200_show_string(0, 0, Text); + ips200_show_string(20, 20, "Long Press to Reset"); +}