#pragma once #ifdef __cplusplus extern "C" { #endif /* Includes ----------------------------------------------------------------- */ #include #include "FreeRTOS.h" #include "task.h" /* USER INCLUDE BEGIN */ /* USER INCLUDE END */ /* Exported constants ------------------------------------------------------- */ /* 任务运行频率 */ #define SHOOT_CTRL_FREQ (1000.0) #define CMD_FREQ (500.0) #define FORCESENSOR_FREQ (200.0) #define OID_ENCODER_CTRL_FREQ (500.0) /* 任务初始化延时ms */ #define TASK_INIT_DELAY (100u) #define SHOOT_CTRL_INIT_DELAY (0) #define CMD_INIT_DELAY (0) #define FORCESENSOR_INIT_DELAY (0) #define OID_ENCODER_CTRL_INIT_DELAY (0) /* Exported defines --------------------------------------------------------- */ /* Exported macro ----------------------------------------------------------- */ /* Exported types ----------------------------------------------------------- */ /* 任务运行时结构体 */ typedef struct { /* 各任务,也可以叫做线程 */ struct { osThreadId_t shoot_ctrl; osThreadId_t cmd; osThreadId_t ForceSensor; osThreadId_t Oid_Encoder_ctrl; } thread; /* USER MESSAGE BEGIN */ struct { osMessageQueueId_t user_msg; /* 用户自定义任务消息队列 */ struct { osMessageQueueId_t imu; osMessageQueueId_t cmd; osMessageQueueId_t yaw; }chassis; struct { osMessageQueueId_t imu; osMessageQueueId_t cmd; }gimbal; struct{ osMessageQueueId_t cmd; }shoot; struct{ osMessageQueueId_t rc; }cmd; } msgq; /* USER MESSAGE END */ /* 机器人状态 */ struct { float battery; /* 电池电量百分比 */ float vbat; /* 电池电压 */ float cpu_temp; /* CPU温度 */ } status; /* USER CONFIG BEGIN */ /* USER CONFIG END */ /* 各任务的stack使用 */ struct { UBaseType_t shoot_ctrl; UBaseType_t cmd; UBaseType_t ForceSensor; UBaseType_t Oid_Encoder_ctrl; } stack_water_mark; /* 各任务运行频率 */ struct { float shoot_ctrl; float cmd; float ForceSensor; float Oid_Encoder_ctrl; } freq; /* 任务最近运行时间 */ struct { float shoot_ctrl; float cmd; float ForceSensor; float Oid_Encoder_ctrl; } last_up_time; } Task_Runtime_t; /* 任务运行时结构体 */ extern Task_Runtime_t task_runtime; /* 初始化任务句柄 */ extern const osThreadAttr_t attr_init; extern const osThreadAttr_t attr_shoot_ctrl; extern const osThreadAttr_t attr_cmd; extern const osThreadAttr_t attr_ForceSensor; extern const osThreadAttr_t attr_Oid_Encoder_ctrl; /* 任务函数声明 */ void Task_Init(void *argument); void Task_shoot_ctrl(void *argument); void Task_cmd(void *argument); void Task_ForceSensor(void *argument); void Task_Oid_Encoder_ctrl(void *argument); #ifdef __cplusplus } #endif