From 4629409b61a35ab298d1c68514758d927ecdea6f Mon Sep 17 00:00:00 2001 From: sunlight <2524828700@qq.com> Date: Wed, 11 Sep 2024 20:36:00 +0800 Subject: [PATCH] finish first job (add login function isbelong which page) --- .vscode/settings.json | 3 ++- Core/Src/stm32f4xx_hal_msp.c | 19 ------------------- Core/Src/stm32f4xx_it.c | 3 --- Usr/service/app_core.c | 18 ++++++++---------- Usr/service/front_end_controler.c | 36 ++++++++++++++++++++---------------- Usr/service/front_end_controler.h | 15 +++++++++++---- Usr/service/page/Page_SettingTime.c | 8 +++++--- Usr/service/page/Page_SettingTime.h | 4 ++-- Usr/service/page/Page_main.c | 8 ++++++-- Usr/service/page/Page_main.h | 6 +++--- Usr/service/page/page_processer.c | 32 ++++++++++++++------------------ Usr/service/page/page_processer.h | 14 +++++--------- stm32basic/ztask.c | 5 ++--- stm32basic/ztask.h | 4 +--- ui/ui.HMI | Bin 13346024 -> 13346024 bytes 15 files changed, 79 insertions(+), 96 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 9eb0f85..30c76bd 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -20,6 +20,7 @@ "standbymode.h": "c", "ztask.h": "c", "stdbool.h": "c", - "stdint.h": "c" + "stdint.h": "c", + "ui.h": "c" } } \ No newline at end of file diff --git a/Core/Src/stm32f4xx_hal_msp.c b/Core/Src/stm32f4xx_hal_msp.c index 9f487f2..7def035 100644 --- a/Core/Src/stm32f4xx_hal_msp.c +++ b/Core/Src/stm32f4xx_hal_msp.c @@ -197,25 +197,6 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart) GPIO_InitStruct.Alternate = GPIO_AF7_USART1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /* USER CODE BEGIN USART1_MspInit 1 */ -/*********************************************************************************************************************** - * DMA鍒濆?嬪寲 * - ***********************************************************************************************************************/ - HAL_NVIC_SetPriority(DMA2_Stream2_IRQn, 5, 0); - HAL_NVIC_EnableIRQ(DMA2_Stream2_IRQn); - hdma2_stream2.Instance = DMA2_Stream2; - hdma2_stream2.Init.Channel = DMA_CHANNEL_4; - hdma2_stream2.Init.Direction = DMA_PERIPH_TO_MEMORY; - hdma2_stream2.Init.PeriphInc = DMA_PINC_DISABLE; - hdma2_stream2.Init.MemInc = DMA_MINC_ENABLE; - hdma2_stream2.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE; - hdma2_stream2.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE; - hdma2_stream2.Init.Mode = DMA_NORMAL; - hdma2_stream2.Init.Priority = DMA_PRIORITY_LOW; - hdma2_stream2.Init.FIFOMode = DMA_FIFOMODE_DISABLE; - if (HAL_DMA_Init(&hdma2_stream2) != HAL_OK) { - Error_Handler(); - } __HAL_LINKDMA(&huart1, hdmarx, hdma2_stream2); HAL_NVIC_SetPriority(USART1_IRQn, 5, 0); diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c index 70ee76f..c3403bb 100644 --- a/Core/Src/stm32f4xx_it.c +++ b/Core/Src/stm32f4xx_it.c @@ -233,9 +233,6 @@ void RTC_Alarm_IRQHandler(void) void UART4_IRQHandler(void){ HAL_UART_IRQHandler(&huart4); } /* USER CODE BEGIN 1 */ -void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){ - huart->USR_DMARxSize = Size; -} void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart->USR_UartITRxing) { diff --git a/Usr/service/app_core.c b/Usr/service/app_core.c index a90409c..05218b2 100644 --- a/Usr/service/app_core.c +++ b/Usr/service/app_core.c @@ -7,19 +7,18 @@ void App_initialize(void){ DBUG_USART1_UART_Init(460800); ZLOGI(TAG,"======================= boardinfo ==================== "); - //zlog("DBUG_UART"); App_HardWare_initialize();//硬件初始化 - task_init(); - // Front_initialize();//前端串口初始化 + + task_init(); + Page_initialize(pg_main); + Page_initialize(pg_SettingTime); } void umain(void){ App_initialize(); - - task_init(); while (1) { appsetup(); @@ -29,11 +28,10 @@ void umain(void){ void appsetup(void) { - - Front_initialize(); - // Page_initialize(Page_main); - // Page_initialize(Page_SetingTime); - Front_startSchedule(); } + +void debugLightLoop(void){ + +} \ No newline at end of file diff --git a/Usr/service/front_end_controler.c b/Usr/service/front_end_controler.c index b6e6d2f..85580b3 100644 --- a/Usr/service/front_end_controler.c +++ b/Usr/service/front_end_controler.c @@ -6,13 +6,12 @@ Task_t usartRxtask; Task_t eventProcesstask; -FunctionCB m_cb[50]; -int32_t m_ncb = 0; -static bool processerstate; + +static process_state_t processerstate; static tjc_packet_t* eventpacket; static UART_HandleTypeDef* tjcUart;//前端数据串口接收 - +frontend_t frontend; //临时函数 void task_init(){ @@ -100,11 +99,14 @@ void eventProcessTask(void){ static tjc_packet_t packet; packet = *(eventpacket); - if(processerstate) - { + if(processerstate != sucess) + return ; + + memset(&event_cache, 0, sizeof(event_cache)); uint8_t packetType = packet.data[0]; if (packetType == tjc_button_event){ + event_cache.event_id = packet.data[0]; event_cache.pid = packet.data[1]; event_cache.bid = packet.data[2]; @@ -126,35 +128,37 @@ void eventProcessTask(void){ callUsrEventCb(&event_cache); } + processerstate = ending; - - } } void Front_initialize(void){ Task_init(&usartRxtask); - //Task_init(&eventProcesstask); + Task_init(&eventProcesstask); } void Front_startSchedule(void) { //uart_start注册数据处理 Task_start(uartRxTask,&usartRxtask); - //Task_start(eventProcessTask,&usartRxtask); + Task_start(eventProcessTask,&eventProcesstask); } - -void regOnUsrEventCb(FunctionCB cb){ - m_cb[m_ncb] = cb; - m_ncb++; +//注册函数无法传递页面id信息 +//所以多加了一个isbelongpage参数同步对应页面函数 +void regOnUsrEventCb(FunctionCB cb, uint8_t page){ + frontend.m_cb[frontend.m_ncb] = cb; + frontend.isbelongpage[frontend.m_ncb] = page; + frontend.m_ncb++; + } void callUsrEventCb(tjc_event_t* event){ - for (int32_t i = 0; i < m_ncb; i++) { - m_cb[i](event); + for (int32_t i = 0; i < frontend.m_ncb; i++) { + frontend.m_cb[i](event,frontend.isbelongpage[i]); } } diff --git a/Usr/service/front_end_controler.h b/Usr/service/front_end_controler.h index c34d96b..12a6fcc 100644 --- a/Usr/service/front_end_controler.h +++ b/Usr/service/front_end_controler.h @@ -18,18 +18,25 @@ typedef struct { typedef enum{ error, sucess, -} process_state; + ending, +} process_state_t; -typedef void (*FunctionCB)(tjc_event_t*); +typedef void (*FunctionCB)(tjc_event_t*,uint8_t); -extern uint8_t IsBelongPage; +typedef struct{ + + FunctionCB m_cb[50]; + int32_t m_ncb; + uint8_t isbelongpage[50]; + +}frontend_t; void Front_startSchedule(void); void Front_initialize(void); -void regOnUsrEventCb(FunctionCB cb); +void regOnUsrEventCb(FunctionCB cb, uint8_t page); void callUsrEventCb(tjc_event_t* event); diff --git a/Usr/service/page/Page_SettingTime.c b/Usr/service/page/Page_SettingTime.c index 6f2e5fb..e0cbdb1 100644 --- a/Usr/service/page/Page_SettingTime.c +++ b/Usr/service/page/Page_SettingTime.c @@ -1,12 +1,14 @@ #include "Page_SettingTime.h" - +#include "front_end_controler.h" #define TAG "Page_SettingTime" -void OnPageLoade_settingtime(){ + +void OnPageLoade_settingtime(){ + ZLOGI(TAG, "OnPageLoade_settingtime"); } void OnPageButton_settingtime(uint8_t bid, uint8_t val){ - + ZLOGI(TAG, "OnPageLoade_settingtime bid:%d val:%d", bid, val); } \ No newline at end of file diff --git a/Usr/service/page/Page_SettingTime.h b/Usr/service/page/Page_SettingTime.h index b94a5e8..41d6903 100644 --- a/Usr/service/page/Page_SettingTime.h +++ b/Usr/service/page/Page_SettingTime.h @@ -1,5 +1,5 @@ #pragma once -#include "stm32f4xx_hal.h" +#include "page_processer.h" void OnPageLoade_settingtime(); -void OnPageButton_settingtime(uint8_t bid, uint8_t val); \ No newline at end of file +void OnPageButton_settingtime(uint8_t bid, uint8_t val); diff --git a/Usr/service/page/Page_main.c b/Usr/service/page/Page_main.c index 98c7d19..9a1628a 100644 --- a/Usr/service/page/Page_main.c +++ b/Usr/service/page/Page_main.c @@ -1,13 +1,17 @@ #include "Page_main.h" +#include "front_end_controler.h" #define PAGE pg_main #define TAG "Page_main" -void OnPageLoad_main(){ + + +void OnPageLoad_main(){ + ZLOGI(TAG, "OnPageLoad_main"); } void OnPageButton_main(uint8_t bid, uint8_t val){ - + ZLOGI(TAG, "OnPageButton_main bid:%d val:%d", bid, val); } diff --git a/Usr/service/page/Page_main.h b/Usr/service/page/Page_main.h index c8e6c64..df8b235 100644 --- a/Usr/service/page/Page_main.h +++ b/Usr/service/page/Page_main.h @@ -1,7 +1,7 @@ #pragma once -#include "stm32f4xx_hal.h" - +//#include "stm32f4xx_hal.h" +#include "page_processer.h" void OnPageLoad_main(); -void OnPageButton_main(uint8_t bid, uint8_t val); \ No newline at end of file +void OnPageButton_main(uint8_t bid, uint8_t val); diff --git a/Usr/service/page/page_processer.c b/Usr/service/page/page_processer.c index a8fa399..24d4510 100644 --- a/Usr/service/page/page_processer.c +++ b/Usr/service/page/page_processer.c @@ -1,28 +1,21 @@ #include "page_processer.h" #include "front_end_controler.h" +#include "Page_main.h" +#include "Page_SettingTime.h" -static bool Page_Mrg = false; +#define TAG "page_Processer" +//页面事件函数注册:参照数组实现多级菜单 PageProcesser init[] = { {OnPageLoad_main,OnPageButton_main}, {OnPageLoade_settingtime,OnPageButton_settingtime}, }; +void page_processer(tjc_event_t* event, uint8_t page){ -uint8_t JudgePage(uint8_t page){ - switch(page){ - case pg_main: return 1;break; - case pg_SettingTime: return 1;break; - default: return 0;break; - } -} -void page_processer(tjc_event_t* event){ - uint8_t page; - if(!JudgePage(event->pid)) - return ; - - page = event->pid; + if(page != event->pid)return; + ZLOGI(TAG, "page:%d",page); if(event->event_id == tjc_sys_event_page_id){ init[page].OnPageLoad(); }else if(event->event_id == tjc_button_event){ @@ -30,10 +23,13 @@ void page_processer(tjc_event_t* event){ } } -void Page_initialize(uint8_t page) -{ - regOnUsrEventCb(page_processer); -} +/* +* @brief 页面注册登记,需要登记每个页面id +* +* +*/ +void Page_initialize(uint8_t page) {regOnUsrEventCb(page_processer, page);} + diff --git a/Usr/service/page/page_processer.h b/Usr/service/page/page_processer.h index af8e8e5..f5c446c 100644 --- a/Usr/service/page/page_processer.h +++ b/Usr/service/page/page_processer.h @@ -1,20 +1,16 @@ #pragma once -#include "Page_main.h" -#include "Page_SettingTime.h" +#include #include "ui.h" - -// extern PageProcesser Page_initialize; - -// typedef enum{ -// Page_main, -// Page_SetingTime, -// } page_t; +#include "tjc_processer.h" +#include "zlog.h" typedef struct { void (*OnPageLoad)(); void (*OnPageButton)(uint8_t,uint8_t); } PageProcesser; +void page_processer(tjc_event_t* event, uint8_t page); void Page_initialize(uint8_t page); + diff --git a/stm32basic/ztask.c b/stm32basic/ztask.c index 1386bf2..a28003f 100644 --- a/stm32basic/ztask.c +++ b/stm32basic/ztask.c @@ -10,11 +10,10 @@ */ void Task_init(Task_t* task){ if(task->TaskNotify){ - task->TaskNotify--; if(task->m_tasktransition){ task->m_status = working; - ZLOGI(TAG, "task_init"); + //ZLOGI(TAG, "task_init"); if(task->m_taskfunc) task->m_taskfunc(); task->m_status = end; } @@ -50,6 +49,6 @@ void Task_start(taskfuction cb, Task_t* task){ task->m_tasktransition = true;//状态: 空闲,状态转换开 task->TaskNotify++; //通知任务 } - ZLOGI(TAG, "TaskNotify: %d", task->TaskNotify); + //ZLOGI(TAG, "TaskNotify: %d", task->TaskNotify); } \ No newline at end of file diff --git a/stm32basic/ztask.h b/stm32basic/ztask.h index 1c4df96..a1b92d1 100644 --- a/stm32basic/ztask.h +++ b/stm32basic/ztask.h @@ -1,11 +1,9 @@ #pragma once #include -#include #include "zlog.h" -//extern taskfuction m_taskfunc; +#include typedef void (*taskfuction)(); -//typedef void (*taskfuction)(taskfuction); //状态机 typedef enum{ diff --git a/ui/ui.HMI b/ui/ui.HMI index 044e83874da60c0fc235c52b10e97a86ca23fb17..d5559fb830135225e78d03e2e6c089854c168591 100644 GIT binary patch delta 1179 zcmdVYNlcSL6bJBczS5#%QVup^3;|7qiy;`Wpr}w+5OG5kH>6sTqT*0c+|Vk2Y26DH zKgF%?8{$&+bHNp4};H`=ODv3w0`jX$wyv&=)O!9iW+fBXXi_dy% z7K+_jnUY(Or}RZYkxGDT5!nlunY>n;A(BTTM@YrTS-dlg#^Q3DC5CHCO_BCr1${$m ztW@!jt5Uq1G46a?L>YalW)24j(haTt#Y$VLuqn21T3j47CkX~;z$ zrXwFSP=J}3h1r;cxhTXu6k$FVpco6W2#c`uaPL>X4098OeVHP&D) zDzVNl16rz(ftG;u>2HM0H<-RgefL^ov|&bR)zowuC&Ick%0^Xhv&!D+l=S{=Ea`Gq z)|4k&N3#QeC)J4#IdYWwPnw+MbR;EfzIbVgoKQ+*8$S1FiAI^B^HxW+5L#7+EYdr& zuCek(ni`un`sMer8?S1+sREkXeZSZ zXcsk*hrG0#_RwD1NBijj9V8z$QWG_kpIYb;X>^#5P%9m!V|1KO&`Ao=DLPGO=q#P1 z^K^kO(j~e~SE!AyQafFv>vV%|Qjl)ZZMs7`-KBeUpB_*LJ)}qUn4Zv6dPbe}oVqAP QFX$z8(SzopvTF{zrc&={A}{hLvtieKO1ouGkI%6Fe#s(TbLdQ= zGlk9+I#cLOp)-Z9`RLvKp`c#Z3jGm*NtldCOhFW)5rbI7VJfC!I%Z%dW??qwARY-w z#9Yk7d@R61EJ6|%BN-`3MH-f1DVAY5R$wJoVKr=6gLGsd6Iob`Y~)}a)?)*5k%x^H z!YyM};jDBExA9&T2`2N%_8&C~esZ|Cm=MsQdH$cT9JiZ1^E9Jyu&C7JJ57Yir~%@O z+9}6bM5-3A$~v>K7*!S#qRHTh{DHC~NQ{;RR*@{lM3G`NM2gRv*%kKlZQEZO{OW7) z=|39eYU(KIZxzA5w)C8gJX>yNm>g>r)qnKy{$AYqtxQ%$3+el@@8}XEI!0Im3|_9? zf(kVJkXQ+zKlAEgO9G#~NbdfI6Wx7IF=^EA0b-F>dbdzpT z9o?pSx9?(O2L=E(q8mWnz=?OihXY`z2Pz$}JSJX