12 changed files with 306 additions and 79 deletions
-
4.settings/language.settings.xml
-
5.vscode/settings.json
-
35Usr/service/app_core.c
-
1Usr/service/app_core.h
-
102Usr/service/front_end_controler.c
-
25Usr/service/front_end_controler.h
-
1Usr/service/page/Page_main.h
-
25Usr/service/page/page_processer.c
-
8Usr/service/page/page_processer.h
-
87stm32basic/text.txt
-
55stm32basic/ztask.c
-
37stm32basic/ztask.h
@ -1,6 +1,7 @@ |
|||||
#pragma once |
#pragma once |
||||
|
|
||||
#include "stm32f4xx_hal.h" |
#include "stm32f4xx_hal.h" |
||||
|
|
||||
void OnPageLoad_main(); |
void OnPageLoad_main(); |
||||
|
|
||||
void OnPageButton_main(uint8_t bid, uint8_t val); |
void OnPageButton_main(uint8_t bid, uint8_t val); |
@ -0,0 +1,87 @@ |
|||||
|
|
||||
|
|
||||
|
// void eventProcessTask_init(void){ |
||||
|
// if(eventProcesstask.TaskNotify){ |
||||
|
|
||||
|
// eventProcesstask.TaskNotify--; |
||||
|
// if(eventProcesstask.m_tasktransition){ |
||||
|
// eventProcesstask.m_status = working; |
||||
|
// ZLOGI(TAG, "eventRXtask_init"); |
||||
|
// if(eventProcesstask.m_taskfunc) eventProcesstask.m_taskfunc(); |
||||
|
// eventProcesstask.m_status = end; |
||||
|
// } |
||||
|
// else{ |
||||
|
// eventProcesstask.m_status = idle; |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
// void eventProcessTask_start(taskfuction cb){ |
||||
|
|
||||
|
// if(eventProcesstask.m_status != idle){ |
||||
|
// eventProcesstask.m_tasktransition = false;//状态: 非空闲,状态转换关 |
||||
|
// eventProcesstask.TaskNotify++; //通知任务 |
||||
|
// } |
||||
|
// else{ |
||||
|
// eventProcesstask.m_taskfunc = cb; |
||||
|
// eventProcesstask.m_tasktransition = true;//状态: 空闲,状态转换开 |
||||
|
// eventProcesstask.TaskNotify++; //通知任务 |
||||
|
// } |
||||
|
// ZLOGI(TAG, "eventTaskNotify: %d", eventProcesstask.TaskNotify); |
||||
|
// } |
||||
|
|
||||
|
// void eventProcesstask_start(FunctionCB cb){ |
||||
|
// eventProcessfunc = cb; |
||||
|
// } |
||||
|
|
||||
|
|
||||
|
// /* |
||||
|
// * @brief 回调函数注册 |
||||
|
// * |
||||
|
// * |
||||
|
// * |
||||
|
// *判断任务状态 |
||||
|
// *任务空闲:状态转换开 |
||||
|
// * 状态转换开:1.回调函数登记注册 |
||||
|
// * 2.任务通知 |
||||
|
// * |
||||
|
// *任务非空闲:状态转换关 |
||||
|
// * 状态转换关:1.不注册 |
||||
|
// * 2.任务通知等待任务状态空闲 |
||||
|
// */ |
||||
|
// void uartRxTask_start(taskfuction cb){ |
||||
|
|
||||
|
|
||||
|
// if(usartRxtask.m_status != idle){ |
||||
|
// usartRxtask.m_tasktransition = false;//状态: 非空闲,状态转换关 |
||||
|
// usartRxtask.TaskNotify++; //通知任务 |
||||
|
// } |
||||
|
// else{ |
||||
|
// usartRxtask.m_taskfunc = cb; |
||||
|
// usartRxtask.m_tasktransition = true;//状态: 空闲,状态转换开 |
||||
|
// usartRxtask.TaskNotify++; //通知任务 |
||||
|
// } |
||||
|
// ZLOGI(TAG, "uartTaskNotify: %d", usartRxtask.TaskNotify); |
||||
|
// } |
||||
|
|
||||
|
// /* |
||||
|
// * @brief: uart回调任务状态转换,由任务时间表进行任务通知 |
||||
|
// * |
||||
|
// */ |
||||
|
// void uartRxTask_init(void){ |
||||
|
// if(usartRxtask.TaskNotify){ |
||||
|
|
||||
|
// usartRxtask.TaskNotify--; |
||||
|
// if(usartRxtask.m_tasktransition){ |
||||
|
// usartRxtask.m_status = working; |
||||
|
// ZLOGI(TAG, "uartRXtask_init"); |
||||
|
// if(usartRxtask.m_taskfunc) usartRxtask.m_taskfunc(); |
||||
|
// usartRxtask.m_status = end; |
||||
|
// } |
||||
|
// else{ |
||||
|
// usartRxtask.m_status = idle; |
||||
|
// } |
||||
|
// } |
||||
|
// } |
||||
|
|
||||
|
|
||||
|
先写出uart的一系列函数,在将其上升为任务函数 |
@ -0,0 +1,55 @@ |
|||||
|
#include "ztask.h" |
||||
|
|
||||
|
#define TAG "ztask" |
||||
|
|
||||
|
|
||||
|
|
||||
|
/* |
||||
|
* @brief: uart回调任务状态转换,由任务时间表进行任务通知 |
||||
|
* |
||||
|
*/ |
||||
|
void Task_init(Task_t* task){ |
||||
|
if(task->TaskNotify){ |
||||
|
|
||||
|
task->TaskNotify--; |
||||
|
if(task->m_tasktransition){ |
||||
|
task->m_status = working; |
||||
|
ZLOGI(TAG, "task_init"); |
||||
|
if(task->m_taskfunc) task->m_taskfunc(); |
||||
|
task->m_status = end; |
||||
|
} |
||||
|
else{ |
||||
|
task->m_status = idle; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/* |
||||
|
* @brief 回调函数注册 |
||||
|
* |
||||
|
* |
||||
|
* |
||||
|
*判断任务状态 |
||||
|
*任务空闲:状态转换开 |
||||
|
* 状态转换开:1.回调函数登记注册 |
||||
|
* 2.任务通知 |
||||
|
* |
||||
|
*任务非空闲:状态转换关 |
||||
|
* 状态转换关:1.不注册 |
||||
|
* 2.任务通知等待任务状态空闲 |
||||
|
*/ |
||||
|
void Task_start(taskfuction cb, Task_t* task){ |
||||
|
|
||||
|
if(task->m_status != idle){ |
||||
|
task->m_tasktransition = false;//状态: 非空闲,状态转换关 |
||||
|
task->TaskNotify++; //通知任务 |
||||
|
} |
||||
|
else{ |
||||
|
task->m_taskfunc = cb; |
||||
|
task->m_tasktransition = true;//状态: 空闲,状态转换开 |
||||
|
task->TaskNotify++; //通知任务 |
||||
|
} |
||||
|
ZLOGI(TAG, "TaskNotify: %d", task->TaskNotify); |
||||
|
|
||||
|
} |
@ -0,0 +1,37 @@ |
|||||
|
#pragma once |
||||
|
#include <stdbool.h> |
||||
|
#include <stdint.h> |
||||
|
#include "zlog.h" |
||||
|
//extern taskfuction m_taskfunc; |
||||
|
|
||||
|
typedef void (*taskfuction)(); |
||||
|
//typedef void (*taskfuction)(taskfuction); |
||||
|
|
||||
|
//状态机 |
||||
|
typedef enum{ |
||||
|
idle, |
||||
|
working, |
||||
|
end, |
||||
|
} status_t; |
||||
|
|
||||
|
typedef struct{ |
||||
|
|
||||
|
uint32_t TaskNotify;//任务通知信号量 |
||||
|
|
||||
|
status_t m_status; |
||||
|
bool m_tasktransition; |
||||
|
|
||||
|
void (*m_taskfunc)(); |
||||
|
|
||||
|
void (*init)(taskfuction); |
||||
|
void (*start)(taskfuction); |
||||
|
|
||||
|
|
||||
|
}Task_t;//任务结构体 |
||||
|
|
||||
|
|
||||
|
void Task_init(Task_t* task); |
||||
|
void Task_start(taskfuction cb, Task_t* task); |
||||
|
|
||||
|
|
||||
|
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue