revert^2_T-T

This commit is contained in:
yxming66 2025-10-18 22:31:19 +08:00
parent 9c7e5ce006
commit f4c866f892
3 changed files with 117 additions and 20 deletions

View File

@ -142,7 +142,7 @@ int8_t Config_ShootInit(void) {
.id = 0x201 + i,
.module = MOTOR_M3508,
/*设置电机反装example***********************
.reverse = (i == 0||1||3||5) ? true : false,*/
.reverse = (i == 0||i == 2) ? true : false,*/
.reverse = (i == 1) ? true : false,
.gear = false,
};

View File

@ -2,9 +2,39 @@
* far
*/
/********************************* 使用示例 **********************************/
/****************************************************************************/
/********************************* 新手教程 **********************************/
/*1.配置config参数以及Config_ShootInit函数参数*/
/*2.
/*2.在cmd任务中获取遥控器数据如下解析后发送给shoot任务
DEVICE_AT9S_t at9s_from_rc;
Shoot_CMD_t cmd_for_shoot;
osMessageQueueGet(task_runtime.msgq.cmd.rc, &at9s_from_rc, NULL, 0);
switch (at9s_from_rc.data.key_C) {
case AT9S_CMD_SW_DOWN:
cmd_for_shoot.online = at9s_from_rc.online;
cmd_for_shoot.ready = true;
cmd_for_shoot.firecmd = true;
break;
case AT9S_CMD_SW_MID:
cmd_for_shoot.online = at9s_from_rc.online;
cmd_for_shoot.ready = true;
cmd_for_shoot.firecmd = false;
break;
case AT9S_CMD_SW_UP:
cmd_for_shoot.online = at9s_from_rc.online;
cmd_for_shoot.ready = false;
cmd_for_shoot.firecmd = false;
break;
default:
cmd_for_shoot.online = at9s_from_rc.online;
cmd_for_shoot.ready = false;
cmd_for_shoot.firecmd = false;
break;
}
osMessageQueuePut(task_runtime.msgq.shoot.cmd, &cmd_for_shoot, 0, 0);*/
/*3.在shoot任务中完成初始化接收控制指令以及控制函数调用
COMP_AT9S_CMD_t shoot_ctrl_cmd_rc;
Shoot_t shoot;
Shoot_CMD_t shoot_cmd;
@ -13,22 +43,18 @@ void Task(void *argument) {
Config_ShootInit();
Shoot_Init(&shoot,&Config_GetRobotParam()->shoot_param,SHOOT_CTRL_FREQ);
Shoot_SetMode(&shoot,SHOOT_MODE_SINGLE);
/*关于模式切换有两种方式1.初始化一个模式
Shoot_SetMode(&shoot,SHOOT_MODE_SINGLE);
while (1) {
shoot_cmd.online =shoot_ctrl_cmd_rc.online;
shoot_cmd.ready =shoot_ctrl_cmd_rc.shoot.ready;
shoot_cmd.firecmd =shoot_ctrl_cmd_rc.shoot.firecmd;
shoot.mode =shoot_ctrl_cmd_rc.mode;
Chassis_UpdateFeedback(&shoot);
Shoot_Control(&shoot,&shoot_cmd);
/*关于模式切换有两种方式2.或者用遥控器某一摇杆随时切换模式
shoot.mode =shoot_ctrl_cmd_rc.mode;
osMessageQueueGet(task_runtime.msgq.shoot.cmd, &shoot_cmd, NULL, 0);
Shoot_UpdateFeedback(&shoot);
Shoot_Control(&shoot,&shoot_cmd);
}
}
*******************************************************************************/
}*/
/****************************************************************************/
/* Includes ----------------------------------------------------------------- */
#include <string.h>
@ -39,7 +65,6 @@ void Task(void *argument) {
#include "component/user_math.h"
/* Private typedef ---------------------------------------------------------- */
/* Private define ----------------------------------------------------------- */
#define WONDERFUL_COMPENSATION_FORHERO 0.010478f//给英雄做的补偿
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */
static bool last_firecmd;
@ -184,8 +209,6 @@ int8_t Shoot_CaluTargetAngle(Shoot_t *s, Shoot_CMD_t *cmd)
{
s->anglecalu.time_last_shoot=s->now;
CircleAdd(&s->target_variable.target_angle, M_2PI/s->param->num_trig_tooth, M_2PI);
if(s->param->trig_motor_param.module==MOTOR_M3508){
s->target_variable.target_angle+=WONDERFUL_COMPENSATION_FORHERO;}
s->anglecalu.num_to_shoot--;
}
return SHOOT_OK;

74
User/task/cmd.c Normal file
View File

@ -0,0 +1,74 @@
/*
cmd Task
*/
/* Includes ----------------------------------------------------------------- */
#include "task/user_task.h"
/* USER INCLUDE BEGIN */
#include "device/at9s_pro.h"
#include "module/config.h"
#include "module/shoot.h"
//#define DEAD_AREA 0.05f
/* USER INCLUDE END */
/* Private typedef ---------------------------------------------------------- */
/* Private define ----------------------------------------------------------- */
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */
/* USER STRUCT BEGIN */
DEVICE_AT9S_t at9s_from_rc;
Shoot_CMD_t cmd_for_shoot;
/* USER STRUCT END */
/* Private function --------------------------------------------------------- */
/* Exported functions ------------------------------------------------------- */
void Task_cmd(void *argument) {
(void)argument; /* 未使用argument消除警告 */
/* 计算任务运行到指定频率需要等待的tick数 */
const uint32_t delay_tick = osKernelGetTickFreq() / CMD_FREQ;
osDelay(CMD_INIT_DELAY); /* 延时一段时间再开启任务 */
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */
/* USER CODE INIT BEGIN */
/* USER CODE INIT END */
while (1) {
tick += delay_tick; /* 计算下一个唤醒时刻 */
/* USER CODE BEGIN */
osMessageQueueGet(task_runtime.msgq.cmd.rc, &at9s_from_rc, NULL, 0);
switch (at9s_from_rc.data.key_C) {
case AT9S_CMD_SW_DOWN:
cmd_for_shoot.online = at9s_from_rc.online;
cmd_for_shoot.ready = true;
cmd_for_shoot.firecmd = true;
break;
case AT9S_CMD_SW_MID:
cmd_for_shoot.online = at9s_from_rc.online;
cmd_for_shoot.ready = true;
cmd_for_shoot.firecmd = false;
break;
case AT9S_CMD_SW_UP:
cmd_for_shoot.online = at9s_from_rc.online;
cmd_for_shoot.ready = false;
cmd_for_shoot.firecmd = false;
break;
default:
cmd_for_shoot.online = at9s_from_rc.online;
cmd_for_shoot.ready = false;
cmd_for_shoot.firecmd = false;
break;
}
osMessageQueuePut(task_runtime.msgq.shoot.cmd, &cmd_for_shoot, 0, 0);
/* USER CODE END */
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
}
}