/* * far♂蛇模块 */ #pragma once #include #include #ifdef __cplusplus extern "C" { #endif #include "main.h" #include "component/pid.h" #include "device/motor_rm.h" /* Exported constants ------------------------------------------------------- */ #define TRACK_MOTOR_NUM 2 #define TRACK_CMD_RPM_MAX 8000.0f #define TRACK_OK (0) /* 运行正常 */ #define TRACK_ERR_NULL (-1) /* 运行时发现NULL指针 */ #define TRACK_ERR_ERR (-2) /* 运行时发现了其他错误 */ #define TRACK_ERR_MODE (-3) /* 运行时配置了错误的Mode */ #define TRACK_ERR_MOTOR (-4) /* 运行时配置了不存在的电机类型 */ #define TRACK_ERR_MALLOC (-5) /* 内存分配失败 */ /* Exported macro ----------------------------------------------------------- */ /* Exported types ----------------------------------------------------------- */ typedef struct { float now; /* 当前时间,单位秒 */ uint64_t lask_wakeup; /* 上次唤醒时间,单位微秒 */ float dt; /* 两次唤醒间隔时间,单位秒 */ } Track_Timer_t; typedef struct { MOTOR_RM_Param_t motor[TRACK_MOTOR_NUM]; KPID_Params_t pid[TRACK_MOTOR_NUM]; } Track_Params_t; typedef struct { bool enable; float vel; } Track_CMD_t; typedef struct { Track_Params_t *param; Track_Timer_t timer; KPID_t pid[TRACK_MOTOR_NUM]; MOTOR_RM_t motor; struct { float iout[TRACK_MOTOR_NUM]; }output; } Track_t; /* Exported functions prototypes -------------------------------------------- */ #ifdef __cplusplus } #endif