R2_UP/User/task/user_task.h
2025-03-12 10:46:02 +08:00

199 lines
4.2 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef USER_TASK_H
#define USER_TASK_H
/* Includes ----------------------------------------------------------------- */
#include <cmsis_os2.h>
#include "freertos_mpool.h"
#include "FreeRTOS.h"
#include "task.h"
#include "config.h"
/* Exported constants ------------------------------------------------------- */
/* 所有任务都要定义自己的任务运行频率 */
// 分配的频率该如何给定?
#define TASK_FREQ_CHASSIS (900u)
#define TASK_FREQ_CTRL_CMD (500u)
#define TASK_FREQ_NUC (500u)
#define TASK_FREQ_CAN (1000u)
#define TASK_FREQ_NAVI (500u)
#define TASK_FREQ_R12DS (1000u)
#define TASK_FREQ_ACTION (500u)
#define TASK_FREQ_UP (500u) //新加的上层
#define TASK_FREQ_ERROR_DTC (3u)
#define DEBUG
#define TASK_INIT_DELAY_ACTION (400u)
#define TASK_INIT_DELAY_NUC (500u)
/* Exported defines --------------------------------------------------------- */
/* Exported macro ----------------------------------------------------------- */
/* Exported types ----------------------------------------------------------- */
typedef struct {
/* 任务 */
struct {
osThreadId_t atti_esti;
// osThreadId_t chassis;
osThreadId_t dr16;
// osThreadId_t action_ops;
osThreadId_t up;
// osThreadId_t ai;
osThreadId_t can;
osThreadId_t cmd;
osThreadId_t nuc;
// osThreadId_t navi;
osThreadId_t error_detect;
} thread;
/* 队列 */
struct {
struct {
osMessageQueueId_t accl; /* IMU读取 */
osMessageQueueId_t gyro; /* IMU读取 */
osMessageQueueId_t eulr; /* 姿态结算得到欧拉角 */
} imu;
/* 控制指令 */
struct {
struct {
osMessageQueueId_t rc;
osMessageQueueId_t nuc;
osMessageQueueId_t eulr;/*姿态结算得到的欧拉角*/
osMessageQueueId_t Action;
osMessageQueueId_t ops_9_out;
}raw;
osMessageQueueId_t chassis;
osMessageQueueId_t status;
} cmd;
/* can任务放入、读取电机或电容的输入输出 */
struct {
struct {
osMessageQueueId_t chassis6020;
osMessageQueueId_t shoot5065;
osMessageQueueId_t chassis3508;
osMessageQueueId_t pitch6020;
} output;
struct {
osMessageQueueId_t CAN_feedback;//云台6020,3508,5065,sick,can上设备数据
osMessageQueueId_t shoot5065_feedback;
} feedback;
} can;
} msgq;
/*互斥量*/
struct {
SemaphoreHandle_t imu_eulr;
} mutex;
Config_t config; /* 机器人参数 */
#ifdef DEBUG
struct {
UBaseType_t chassis;
UBaseType_t can;
UBaseType_t atti_esti;
UBaseType_t dr16;
UBaseType_t action;
UBaseType_t cmd;
UBaseType_t nuc;
UBaseType_t navi;
UBaseType_t error_detect;
UBaseType_t up;
} stack_water_mark; /* stack使用 */
struct {
// float chassis;
float can;
float atti_esti;
float r12ds;
float cmd;
float nuc;
// float action;
// float navi;
float error_detect;
float up;
} freq; /* 任务运行频率 */
struct {
// float chassis;
float can;
float atti_esti;
// float ai;
float r12ds;
float cmd;
float nuc;
// float navi;
// float action;
float error_detect;
float up;
} last_up_time; /* 任务上一次运行的时间 */
#endif
} Task_Runtime_t;
extern Task_Runtime_t task_runtime;
extern const osThreadAttr_t attr_init;
extern const osThreadAttr_t attr_atti_esti;
//extern const osThreadAttr_t attr_chassis;
extern const osThreadAttr_t attr_can;
extern const osThreadAttr_t attr_cmd;
//extern const osThreadAttr_t attr_ops_9pos;
extern const osThreadAttr_t attr_nuc;
extern const osThreadAttr_t attr_error_detect;
extern const osThreadAttr_t attr_dr16;
//extern const osThreadAttr_t attr_navi;
extern const osThreadAttr_t attr_up;
/* Exported functions prototypes -------------------------------------------- */
void Task_Init(void *argument);
void Task_AttiEsti(void *argument);
//void Task_Chassis(void *argument);
void Task_can(void *argument);
void Task_cmd(void *argument);
void Task_nuc(void *argument);
//void Task_action(void *argument);
//void Task_Navi(void *argument);
void Task_up(void *argument);
void Task_error_detect(void *argument);
void Task_dr16(void *argument);
#endif