diff --git a/User/task/init.c b/User/task/init.c index 7e787d0..9f8f6e8 100644 --- a/User/task/init.c +++ b/User/task/init.c @@ -4,12 +4,10 @@ /* Includes ----------------------------------------------------------------- */ #include "task\user_task.h" -#include "device\can.h" /* Private typedef ---------------------------------------------------------- */ /* Private define ----------------------------------------------------------- */ /* Private macro ------------------------------------------------------------ */ /* Private variables -------------------------------------------------------- */ - /* Private function --------------------------------------------------------- */ /* Exported functions ------------------------------------------------------- */ @@ -23,16 +21,11 @@ void Task_Init(void *argument) { osKernelLock(); // 锁定内核,防止任务切换 - // 创建任务,确保任务创建成功 - task_runtime.thread.disp = osThreadNew(Task_Disp, NULL, &attr_disp); - task_runtime.thread.can = osThreadNew(Task_Can, NULL, &attr_can); - task_runtime.thread.monitor = osThreadNew(Task_Monitor, NULL, &attr_monitor); - task_runtime.thread.pc = osThreadNew(Task_PC, NULL, &attr_pc); + task_runtime.thread.user_task = osThreadNew(Task_UserTask, NULL, &attr_user_task); //创建消息队列 - task_runtime.msgq.can.feedback.sick = osMessageQueueNew(2u, sizeof(CAN_t), NULL); - task_runtime.msgq.pc = osMessageQueueNew(2u, sizeof(CAN_t), NULL); - + task_runtime.msgq.user_msg= osMessageQueueNew(2u, 10, NULL); + osKernelUnlock(); // 解锁内核 osThreadTerminate(osThreadGetId()); // 任务完成后结束自身 } diff --git a/User/task/user_task.h b/User/task/user_task.h index e2b47df..06e0712 100644 --- a/User/task/user_task.h +++ b/User/task/user_task.h @@ -12,82 +12,55 @@ extern "C" { typedef struct { /* 各任务,也可以叫做线程 */ struct { - osThreadId_t can; /* CAN任务 */ - osThreadId_t disp; /* ADC任务 */ - osThreadId_t pc; /* PC任务 */ - osThreadId_t monitor; /* 监控任务 */ + osThreadId_t user_task; } thread; struct { - struct { - struct { - osMessageQueueId_t sick; - } output; - struct { - osMessageQueueId_t sick; - } feedback; - } can; - - osMessageQueueId_t pc; /* PC消息队列 */ + osMessageQueueId_t pc; } msgq; struct { - uint32_t can; /* CAN使用 */ - uint32_t disp; /* ADC使用 */ - uint32_t pc; /* PC使用 */ - uint32_t monitor; /* 监控使用 */ + uint32_t user_task; } heap_water_mark; /* heap使用 */ struct { - float can; /* CAN任务运行频率 */ - float disp; /* ADC任务运行频率 */ - float pc; /* PC任务运行频率 */ - float monitor; /* 监控任务运行频率 */ + float user_task; /* 用户自定义任务运行频率 */ } freq; /* 任务运行频率 */ struct { - uint32_t can; /* CAN任务运行时间 */ - uint32_t disp; /* ADC任务运行时间 */ - uint32_t pc; /* PC任务运行时间 */ - uint32_t monitor; /* 监控任务运行时间 */ + uint32_t user_task; } last_up_time; /* 任务最近运行时间 */ } Task_Runtime_t; // 任务频率和初始化延时 -#define TASK_FREQ_CAN (100u) -#define TASK_FREQ_DISP (1u) -#define TASK_FREQ_MONITOR (1u) -#define TASK_FREQ_PC (100u) +#define TASK_FREQ_USER_TASK (100u) // 用户自定义任务频率 -#define TASK_INIT_DELAY_INFO (500u) +#define TASK_INIT_DELAY_INFO (100u) // 任务句柄 typedef struct { - osThreadId_t can; - osThreadId_t disp; - osThreadId_t monitor; - osThreadId_t pc; + osThreadId_t user_task; /* 用户自定义任务 */ } Task_Handles_t; +// 任务运行时结构体 extern Task_Runtime_t task_runtime; - +// 初始化任务句柄 extern const osThreadAttr_t attr_init; -extern const osThreadAttr_t attr_can; -extern const osThreadAttr_t attr_disp; -extern const osThreadAttr_t attr_monitor; -extern const osThreadAttr_t attr_pc; +// 用户自定义任务句柄 +extern const osThreadAttr_t attr_user_task +// 任务函数声明 +//初始化任务 void Task_Init(void *argument); -void Task_Can(void *argument); -void Task_Disp(void *argument); -void Task_Monitor(void *argument); -void Task_PC(void *argument); +//用户自定义任务 +void Task_UserTask(void *argument); + #ifdef __cplusplus }