rm_balance/User/task/user_task.h

174 lines
4.1 KiB
C

#pragma once
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ----------------------------------------------------------------- */
#include <cmsis_os2.h>
#include "FreeRTOS.h"
#include "task.h"
/* USER INCLUDE BEGIN */
/* USER INCLUDE END */
/* Exported constants ------------------------------------------------------- */
/* 任务运行频率 */
<<<<<<< HEAD
#define BLINK_FREQ (500.0)
#define IMU_FREQ (500.0)
#define CTRL_CHASSIS_FREQ (500.0)
#define ATTI_ESTI_FREQ (500.0)
=======
#define BLINK_FREQ (100.0)
#define RC_FREQ (500.0)
#define ATTI_ESTI_FREQ (1000.0)
#define CTRL_CHASSIS_FREQ (500.0)
#define CTRL_GIMBAL_FREQ (500.0)
>>>>>>> main
/* 任务初始化延时ms */
#define TASK_INIT_DELAY (100u)
#define BLINK_INIT_DELAY (0)
<<<<<<< HEAD
#define IMU_INIT_DELAY (0)
#define CTRL_CHASSIS_INIT_DELAY (0)
#define ATTI_ESTI_INIT_DELAY (0)
=======
#define RC_INIT_DELAY (0)
#define ATTI_ESTI_INIT_DELAY (0)
#define CTRL_CHASSIS_INIT_DELAY (500)
#define CTRL_GIMBAL_INIT_DELAY (0)
>>>>>>> main
/* Exported defines --------------------------------------------------------- */
/* Exported macro ----------------------------------------------------------- */
/* Exported types ----------------------------------------------------------- */
/* 任务运行时结构体 */
typedef struct {
/* 各任务,也可以叫做线程 */
struct {
osThreadId_t blink;
<<<<<<< HEAD
osThreadId_t imu;
osThreadId_t ctrl_chassis;
osThreadId_t atti_esti;
=======
osThreadId_t rc;
osThreadId_t atti_esti;
osThreadId_t ctrl_chassis;
osThreadId_t ctrl_gimbal;
>>>>>>> main
} thread;
/* USER MESSAGE BEGIN */
struct {
osMessageQueueId_t user_msg; /* 用户自定义任务消息队列 */
<<<<<<< HEAD
struct {
osMessageQueueId_t accl;
osMessageQueueId_t gyro;
osMessageQueueId_t eulr;
osMessageQueueId_t quat;
}imu;
=======
osMessageQueueId_t chassis_imu;
osMessageQueueId_t Chassis_cmd;
>>>>>>> main
} msgq;
/* USER MESSAGE END */
/* 机器人状态 */
struct {
float battery; /* 电池电量百分比 */
float vbat; /* 电池电压 */
float cpu_temp; /* CPU温度 */
} status;
/* USER CONFIG BEGIN */
/* USER CONFIG END */
/* 各任务的stack使用 */
struct {
UBaseType_t blink;
<<<<<<< HEAD
UBaseType_t imu;
UBaseType_t ctrl_chassis;
UBaseType_t atti_esti;
=======
UBaseType_t rc;
UBaseType_t atti_esti;
UBaseType_t ctrl_chassis;
UBaseType_t ctrl_gimbal;
>>>>>>> main
} stack_water_mark;
/* 各任务运行频率 */
struct {
float blink;
<<<<<<< HEAD
float imu;
float ctrl_chassis;
float atti_esti;
=======
float rc;
float atti_esti;
float ctrl_chassis;
float ctrl_gimbal;
>>>>>>> main
} freq;
/* 任务最近运行时间 */
struct {
float blink;
<<<<<<< HEAD
float imu;
float ctrl_chassis;
float atti_esti;
=======
float rc;
float atti_esti;
float ctrl_chassis;
float ctrl_gimbal;
>>>>>>> main
} last_up_time;
} Task_Runtime_t;
/* 任务运行时结构体 */
extern Task_Runtime_t task_runtime;
/* 初始化任务句柄 */
extern const osThreadAttr_t attr_init;
extern const osThreadAttr_t attr_blink;
<<<<<<< HEAD
extern const osThreadAttr_t attr_imu;
extern const osThreadAttr_t attr_ctrl_chassis;
extern const osThreadAttr_t attr_atti_esti;
=======
extern const osThreadAttr_t attr_rc;
extern const osThreadAttr_t attr_atti_esti;
extern const osThreadAttr_t attr_ctrl_chassis;
extern const osThreadAttr_t attr_ctrl_gimbal;
>>>>>>> main
/* 任务函数声明 */
void Task_Init(void *argument);
void Task_blink(void *argument);
<<<<<<< HEAD
void Task_imu(void *argument);
void Task_ctrl_chassis(void *argument);
void Task_atti_esti(void *argument);
=======
void Task_rc(void *argument);
void Task_atti_esti(void *argument);
void Task_ctrl_chassis(void *argument);
void Task_ctrl_gimbal(void *argument);
>>>>>>> main
#ifdef __cplusplus
}
#endif