190 lines
4.3 KiB
C
190 lines
4.3 KiB
C
#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丢<65>个<EFBFBD><E4B8AA>任务运行频率<E9A291><E78E87>和“初始化延时 1<E28084>7 */
|
||
//分配的频率该如何给定$1<EFBC84>7
|
||
|
||
#define TASK_FREQ_CHASSIS (500u)
|
||
#define TASK_FREQ_CTRL_CMD (500u)
|
||
#define TASK_FREQ_NUC (500u)
|
||
#define TASK_FREQ_CAN (1000u)
|
||
#define TASK_FREQ_ACTION (500u)
|
||
#define TASK_FREQ_NAVI (500u)
|
||
#define TASK_FREQ_CALCULATE (500u)
|
||
#define TASK_FREQ_REMOTE (1000u)
|
||
#define TASK_FREQ_PRINT (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 remote;
|
||
osThreadId_t ai;
|
||
osThreadId_t can;
|
||
osThreadId_t cmd;
|
||
osThreadId_t nuc;
|
||
osThreadId_t action_ops;
|
||
osThreadId_t calc;
|
||
osThreadId_t navi;
|
||
osThreadId_t error_detect;
|
||
} thread;
|
||
|
||
/* 队列 */
|
||
struct {
|
||
struct {
|
||
osMessageQueueId_t accl; /* IMU读取 */
|
||
osMessageQueueId_t gyro; /* IMU读取 */
|
||
osMessageQueueId_t eulr; /* 姿<><E5A7BF>解算得到的欧拉规1<E8A784>7 */
|
||
} imu;
|
||
/* 控制指令 */
|
||
struct {
|
||
struct {
|
||
osMessageQueueId_t rc;//dr16->cmd
|
||
osMessageQueueId_t nuc;//nuc->cmd
|
||
osMessageQueueId_t ops_9;//navi->cmd
|
||
}raw;
|
||
osMessageQueueId_t chassis;//cmd->chassis
|
||
osMessageQueueId_t calc;//cmd->calc
|
||
} cmd;
|
||
/* can任务放入、读取,电机或电容的输入输出 */
|
||
struct {
|
||
struct {
|
||
osMessageQueueId_t chassis6020;
|
||
osMessageQueueId_t chassis5065;
|
||
osMessageQueueId_t chassis3508;
|
||
osMessageQueueId_t pitch6020;
|
||
} output;
|
||
struct {
|
||
osMessageQueueId_t chassisfed6020;
|
||
osMessageQueueId_t chassisfed5065;
|
||
osMessageQueueId_t chassisfed3508;
|
||
osMessageQueueId_t pitchfed6020;
|
||
osMessageQueueId_t sickfed;
|
||
|
||
} feedback;
|
||
} can;
|
||
struct {
|
||
osMessageQueueId_t Chassis;
|
||
osMessageQueueId_t Calc;
|
||
osMessageQueueId_t Navi;
|
||
} action;
|
||
} msgq;
|
||
|
||
/*互斥釄1<E98784>7*/
|
||
struct {
|
||
SemaphoreHandle_t imu_eulr;
|
||
} mutex;
|
||
|
||
Config_t config; /* 机器人参敄1<E69584>7 */
|
||
|
||
#ifdef DEBUG
|
||
struct {
|
||
UBaseType_t chassis;
|
||
UBaseType_t can;
|
||
UBaseType_t atti_esti;
|
||
UBaseType_t dr16;
|
||
UBaseType_t action;
|
||
UBaseType_t calc;
|
||
UBaseType_t navi;
|
||
UBaseType_t cmd;
|
||
UBaseType_t nuc;
|
||
UBaseType_t error_detect;
|
||
} stack_water_mark; /* stack使用 */
|
||
|
||
struct {
|
||
float chassis;
|
||
float can;
|
||
float atti_esti;
|
||
float r12ds;
|
||
float cmd;
|
||
float nuc;
|
||
float navi;
|
||
float error_detect;
|
||
} freq; /* 任务运行频率 */
|
||
|
||
struct {
|
||
float chassis;
|
||
float can;
|
||
float atti_esti;
|
||
float ai;
|
||
float r12ds;
|
||
float cmd;
|
||
float nuc;
|
||
float error_detect;
|
||
} last_up_time; /* 任务朢<E58AA1>近运行时闄1<E99784>7 */
|
||
#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_nuc;
|
||
|
||
extern const osThreadAttr_t attr_ops_9pos;
|
||
|
||
extern const osThreadAttr_t attr_calc;
|
||
|
||
extern const osThreadAttr_t attr_navi;
|
||
|
||
extern const osThreadAttr_t attr_error_detect;
|
||
|
||
extern const osThreadAttr_t attr_remote;
|
||
/* 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_calc(void *argument);
|
||
|
||
void Task_navi(void *argument);
|
||
|
||
void Task_error_detect(void *argument);
|
||
|
||
void Task_remote(void *argument);
|
||
|
||
#endif
|
||
|