mirror of
				https://github.com/goldenfishs/MRobot.git
				synced 2025-10-31 23:25:42 +08:00 
			
		
		
		
	添加init
This commit is contained in:
		
							parent
							
								
									06a7f65a15
								
							
						
					
					
						commit
						f2734a466f
					
				| @ -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()); // 任务完成后结束自身
 | ||||
| } | ||||
|  | ||||
| @ -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 | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 RB
						RB