修好了
This commit is contained in:
parent
3f9f3ef734
commit
6ed012e759
@ -153,40 +153,7 @@
|
||||
<Name>-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(5BA02477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32H72x-73x_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32H723VGTx$CMSIS\Flash\STM32H72x-73x_1024.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint>
|
||||
<Bp>
|
||||
<Number>0</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>481</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>134292468</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>..\User\device\mrobot.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression>\\CtrBoard_H7_ALL\../User/device/mrobot.c\481</Expression>
|
||||
</Bp>
|
||||
<Bp>
|
||||
<Number>1</Number>
|
||||
<Type>0</Type>
|
||||
<LineNumber>484</LineNumber>
|
||||
<EnabledFlag>1</EnabledFlag>
|
||||
<Address>134292488</Address>
|
||||
<ByteObject>0</ByteObject>
|
||||
<HtxType>0</HtxType>
|
||||
<ManyObjects>0</ManyObjects>
|
||||
<SizeOfObject>0</SizeOfObject>
|
||||
<BreakByAccess>0</BreakByAccess>
|
||||
<BreakIfRCount>1</BreakIfRCount>
|
||||
<Filename>..\User\device\mrobot.c</Filename>
|
||||
<ExecCommand></ExecCommand>
|
||||
<Expression>\\CtrBoard_H7_ALL\../User/device/mrobot.c\484</Expression>
|
||||
</Bp>
|
||||
</Breakpoint>
|
||||
<Breakpoint/>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@ -484,9 +484,8 @@ void MRobot_Init(void) {
|
||||
/* 创建互斥锁 */
|
||||
ctx.mutex = xSemaphoreCreateMutex();
|
||||
|
||||
/* 初始化状态 */
|
||||
memset(ctx.devices, 0, sizeof(ctx.devices));
|
||||
ctx.device_count = 0;
|
||||
/* 初始化状态(保留已注册的设备) */
|
||||
// 注意:不清除 devices 和 device_count,因为其他任务可能已经注册了设备
|
||||
ctx.custom_cmd_count = 0;
|
||||
ctx.state = MROBOT_STATE_IDLE;
|
||||
strcpy(ctx.current_path, "/");
|
||||
|
||||
@ -14,6 +14,7 @@
|
||||
#include "component/pid.h"
|
||||
#include "device/bmi088.h"
|
||||
#include "device/device.h"
|
||||
#include "device/mrobot.h"
|
||||
#include "module/balance_chassis.h"
|
||||
#include "task/user_task.h"
|
||||
#include <stdio.h>
|
||||
@ -52,6 +53,20 @@ static const KPID_Params_t imu_temp_ctrl_pid_param = {
|
||||
/* Private function --------------------------------------------------------- */
|
||||
/* USER PRIVATE CODE BEGIN */
|
||||
|
||||
/**
|
||||
* @brief 底盘IMU数据打印回调
|
||||
*/
|
||||
static int print_chassis_imu(const void *data, char *buf, size_t size) {
|
||||
const Chassis_IMU_t *imu = (const Chassis_IMU_t *)data;
|
||||
return MRobot_Snprintf(buf, size,
|
||||
" Accel : X=%.3f Y=%.3f Z=%.3f (m/s²)\r\n"
|
||||
" Gyro : X=%.3f Y=%.3f Z=%.3f (rad/s)\r\n"
|
||||
" Euler : R=%.2f P=%.2f Y=%.2f (deg)\r\n",
|
||||
imu->accl.x, imu->accl.y, imu->accl.z,
|
||||
imu->gyro.x, imu->gyro.y, imu->gyro.z,
|
||||
imu->euler.rol, imu->euler.pit, imu->euler.yaw);
|
||||
}
|
||||
|
||||
/* USER PRIVATE CODE END */
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
void Task_atti_esit(void *argument) {
|
||||
@ -70,7 +85,7 @@ void Task_atti_esit(void *argument) {
|
||||
PID_Init(&imu_temp_ctrl_pid, KPID_MODE_NO_D,
|
||||
1.0f / BMI088_GetUpdateFreq(&bmi088), &imu_temp_ctrl_pid_param);
|
||||
BSP_PWM_Start(BSP_PWM_IMU_HEAT);
|
||||
|
||||
MRobot_RegisterDevice("chassis_imu", &imu_for_chassis, print_chassis_imu);
|
||||
/* USER CODE INIT END */
|
||||
|
||||
while (1) {
|
||||
|
||||
@ -9,6 +9,7 @@
|
||||
#include "bsp/can.h"
|
||||
#include "device/motor_lk.h"
|
||||
#include "device/motor_lz.h"
|
||||
#include "device/mrobot.h"
|
||||
#include "module/config.h"
|
||||
#include "module/balance_chassis.h"
|
||||
/* USER INCLUDE END */
|
||||
@ -34,6 +35,29 @@ Chassis_IMU_t chassis_imu;
|
||||
/* Private function --------------------------------------------------------- */
|
||||
/* USER PRIVATE CODE BEGIN */
|
||||
|
||||
/**
|
||||
* @brief 底盘数据打印回调
|
||||
*/
|
||||
static int print_chassis(const void *data, char *buf, size_t size) {
|
||||
const Chassis_t *chassis = (const Chassis_t *)data;
|
||||
return MRobot_Snprintf(buf, size,
|
||||
" Mode : %d\r\n"
|
||||
" IMU : Roll=%.2f Pitch=%.2f Yaw=%.2f (deg)\r\n"
|
||||
" Motors : J0=%.1f J1=%.1f J2=%.1f J3=%.1f (rpm)\r\n"
|
||||
" Wheels : W0=%.1f W1=%.1f (rpm)\r\n"
|
||||
" Output : J0=%.1f J1=%.1f J2=%.1f J3=%.1f\r\n"
|
||||
" VelX : %.3f m/s\r\n",
|
||||
chassis->mode,
|
||||
chassis->feedback.imu.euler.rol, chassis->feedback.imu.euler.pit, chassis->feedback.imu.euler.yaw,
|
||||
chassis->feedback.joint[0].rotor_speed, chassis->feedback.joint[1].rotor_speed,
|
||||
chassis->feedback.joint[2].rotor_speed, chassis->feedback.joint[3].rotor_speed,
|
||||
chassis->feedback.wheel[0].rotor_speed, chassis->feedback.wheel[1].rotor_speed,
|
||||
chassis->output.joint[0], chassis->output.joint[1],
|
||||
chassis->output.joint[2], chassis->output.joint[3],
|
||||
chassis->chassis_state.velocity_x);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* USER PRIVATE CODE END */
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
void Task_ctrl_chassis(void *argument) {
|
||||
@ -49,6 +73,7 @@ void Task_ctrl_chassis(void *argument) {
|
||||
/* USER CODE INIT BEGIN */
|
||||
|
||||
Chassis_Init(&chassis, &Config_GetRobotParam()->chassis_param, CTRL_CHASSIS_FREQ);
|
||||
MRobot_RegisterDevice("chassis", &chassis, print_chassis);
|
||||
|
||||
/* USER CODE INIT END */
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
#include "task/user_task.h"
|
||||
/* USER INCLUDE BEGIN */
|
||||
#include "component/ahrs.h"
|
||||
#include "device/mrobot.h"
|
||||
#include "module/gimbal.h"
|
||||
#include "module/config.h"
|
||||
#include "bsp/can.h"
|
||||
@ -26,6 +27,25 @@ Gimbal_AI_t gimbal_ai;
|
||||
/* Private function --------------------------------------------------------- */
|
||||
/* USER PRIVATE CODE BEGIN */
|
||||
|
||||
/**
|
||||
* @brief 云台数据打印回调
|
||||
*/
|
||||
static int print_gimbal(const void *data, char *buf, size_t size) {
|
||||
const Gimbal_t *gimbal = (const Gimbal_t *)data;
|
||||
return MRobot_Snprintf(buf, size,
|
||||
" Mode : %d\r\n"
|
||||
" IMU : Roll=%.2f Pitch=%.2f Yaw=%.2f (deg)\r\n"
|
||||
" GyroX : %.3f GyroY : %.3f GyroZ : %.3f (rad/s)\r\n"
|
||||
" Motor : Yaw=%.1f(rpm) Pit=%.1f(rpm)\r\n"
|
||||
" Output : Yaw=%.1f Pit=%.1f\r\n",
|
||||
gimbal->mode,
|
||||
gimbal->imu.data.eulr.rol, gimbal->imu.data.eulr.pit, gimbal->imu.data.eulr.yaw,
|
||||
gimbal->imu.data.gyro.x, gimbal->imu.data.gyro.y, gimbal->imu.data.gyro.z,
|
||||
gimbal->feedback.motor.yaw.rotor_speed, gimbal->feedback.motor.pit.rotor_speed,
|
||||
gimbal->out.yaw, gimbal->out.pit);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* USER PRIVATE CODE END */
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
void Task_ctrl_gimbal(void *argument) {
|
||||
@ -39,7 +59,9 @@ void Task_ctrl_gimbal(void *argument) {
|
||||
|
||||
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */
|
||||
/* USER CODE INIT BEGIN */
|
||||
|
||||
Gimbal_Init(&gimbal, &Config_GetRobotParam()->gimbal_param, CTRL_GIMBAL_FREQ);
|
||||
MRobot_RegisterDevice("gimbal", &gimbal, print_gimbal);
|
||||
/* USER CODE INIT END */
|
||||
|
||||
while (1) {
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
/* Includes ----------------------------------------------------------------- */
|
||||
#include "task/user_task.h"
|
||||
/* USER INCLUDE BEGIN */
|
||||
#include "device/mrobot.h"
|
||||
#include "module/shoot.h"
|
||||
#include "module/config.h"
|
||||
/* USER INCLUDE END */
|
||||
@ -22,6 +23,27 @@ Shoot_CMD_t shoot_cmd;
|
||||
/* Private function --------------------------------------------------------- */
|
||||
/* USER PRIVATE CODE BEGIN */
|
||||
|
||||
/**
|
||||
* @brief 发射模块数据打印回调
|
||||
*/
|
||||
static int print_shoot(const void *data, char *buf, size_t size) {
|
||||
const Shoot_t *shoot = (const Shoot_t *)data;
|
||||
return MRobot_Snprintf(buf, size,
|
||||
" State : %d\r\n"
|
||||
" Fric0 : %.1f rpm (target: %.1f)\r\n"
|
||||
" Fric1 : %.1f rpm (target: %.1f)\r\n"
|
||||
" Fric_Avg : %.1f rpm\r\n"
|
||||
" Trig : %.1f rpm (angle: %.2f deg)\r\n"
|
||||
" Output : Fric0=%.1f Fric1=%.1f Trig=%.1f\r\n",
|
||||
shoot->running_state,
|
||||
shoot->feedback.fric_rpm[0], shoot->target_variable.target_rpm,
|
||||
shoot->feedback.fric_rpm[1], shoot->target_variable.target_rpm,
|
||||
shoot->feedback.fric_avgrpm,
|
||||
shoot->feedback.trig_rpm, shoot->feedback.trig_angle_cicle,
|
||||
shoot->output.out_fric[0], shoot->output.out_fric[1], shoot->output.outagl_trig);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* USER PRIVATE CODE END */
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
void Task_ctrl_shoot(void *argument) {
|
||||
@ -35,7 +57,9 @@ void Task_ctrl_shoot(void *argument) {
|
||||
|
||||
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */
|
||||
/* USER CODE INIT BEGIN */
|
||||
|
||||
Shoot_Init(&shoot,&Config_GetRobotParam()->shoot_param,CTRL_SHOOT_FREQ);
|
||||
MRobot_RegisterDevice("shoot", &shoot, print_shoot);
|
||||
|
||||
/* USER CODE INIT END */
|
||||
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
#include "task/user_task.h"
|
||||
/* USER INCLUDE BEGIN */
|
||||
#include "device/dr16.h"
|
||||
#include "device/mrobot.h"
|
||||
#include "module/shoot.h"
|
||||
#include "module/balance_chassis.h"
|
||||
#include "module/gimbal.h"
|
||||
@ -27,6 +28,29 @@ Gimbal_CMD_t cmd_for_gimbal;
|
||||
/* Private function --------------------------------------------------------- */
|
||||
/* USER PRIVATE CODE BEGIN */
|
||||
|
||||
/**
|
||||
* @brief DR16数据打印回调
|
||||
*/
|
||||
static int print_dr16(const void *data, char *buf, size_t size) {
|
||||
const DR16_t *dr16 = (const DR16_t *)data;
|
||||
return MRobot_Snprintf(buf, size,
|
||||
" Status : %s\r\n"
|
||||
" ChLX : %.3f ChLY : %.3f\r\n"
|
||||
" ChRX : %.3f ChRY : %.3f\r\n"
|
||||
" ChRes : %.3f\r\n"
|
||||
" SwL : %d SwR : %d\r\n"
|
||||
" Mouse : X=%d Y=%d Z=%d (L:%d R:%d)\r\n"
|
||||
" Keys : 0x%04X\r\n",
|
||||
dr16->header.online ? "Online" : "Offline",
|
||||
dr16->data.ch_l_x, dr16->data.ch_l_y,
|
||||
dr16->data.ch_r_x, dr16->data.ch_r_y,
|
||||
dr16->data.ch_res,
|
||||
dr16->data.sw_l, dr16->data.sw_r,
|
||||
dr16->data.mouse.x, dr16->data.mouse.y, dr16->data.mouse.z,
|
||||
dr16->data.mouse.l_click, dr16->data.mouse.r_click,
|
||||
dr16->data.keyboard.value);
|
||||
}
|
||||
|
||||
/* USER PRIVATE CODE END */
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
void Task_rc(void *argument) {
|
||||
@ -41,6 +65,7 @@ void Task_rc(void *argument) {
|
||||
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */
|
||||
/* USER CODE INIT BEGIN */
|
||||
DR16_Init(&dr16);
|
||||
MRobot_RegisterDevice("dr16", &dr16, print_dr16);
|
||||
/* USER CODE INIT END */
|
||||
|
||||
while (1) {
|
||||
|
||||
@ -5,7 +5,7 @@ Task_Runtime_t task_runtime;
|
||||
const osThreadAttr_t attr_init = {
|
||||
.name = "Task_Init",
|
||||
.priority = osPriorityRealtime,
|
||||
.stack_size = 256 * 4,
|
||||
.stack_size = 256 * 16,
|
||||
};
|
||||
|
||||
/* User_task */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user