Compare commits

..

No commits in common. "2e854ade02ce7e616e1f1029bfa438c3759bae73" and "6179339e825b4ae2426bb0f01b6f5ac18572a549" have entirely different histories.

20 changed files with 85 additions and 191 deletions

2
.gitignore vendored
View File

@ -17,7 +17,7 @@
*.dbg* *.dbg*
*.uvguix.* *.uvguix.*
.mxproject .mxproject
*.axf
RTE/ RTE/
Templates/ Templates/
Examples/ Examples/

View File

@ -26,7 +26,7 @@
<ToolsetNumber>0x4</ToolsetNumber> <ToolsetNumber>0x4</ToolsetNumber>
<ToolsetName>ARM-ADS</ToolsetName> <ToolsetName>ARM-ADS</ToolsetName>
<TargetOption> <TargetOption>
<CLKADS>25000000</CLKADS> <CLKADS>12000000</CLKADS>
<OPTTT> <OPTTT>
<gFlags>1</gFlags> <gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd> <BeepAtEnd>1</BeepAtEnd>
@ -117,6 +117,11 @@
<pMon>BIN\CMSIS_AGDI.dll</pMon> <pMon>BIN\CMSIS_AGDI.dll</pMon>
</DebugOpt> </DebugOpt>
<TargetDriverDllRegistry> <TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>ST-LINKIII-KEIL_SWO</Key>
<Name>-U00160029510000164E574E32 -O206 -SF1000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
</SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>ARMRTXEVENTFLAGS</Key> <Key>ARMRTXEVENTFLAGS</Key>
@ -140,7 +145,7 @@
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>CMSIS_AGDI</Key> <Key>CMSIS_AGDI</Key>
<Name>-X"Any" -UAny -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name> <Name>-X"Any" -UAny -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
@ -168,72 +173,12 @@
<Ww> <Ww>
<count>3</count> <count>3</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>UP,0x0A</ItemText> <ItemText>huart-&gt;ErrorCode</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>4</count> <count>4</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>chassis,0x0A</ItemText> <ItemText>UP,0x0A</ItemText>
</Ww>
<Ww>
<count>5</count>
<WinNumber>1</WinNumber>
<ItemText>cmd,0x0A</ItemText>
</Ww>
<Ww>
<count>6</count>
<WinNumber>1</WinNumber>
<ItemText>nucbuf,0x0A</ItemText>
</Ww>
<Ww>
<count>7</count>
<WinNumber>1</WinNumber>
<ItemText>cmd_fromnuc</ItemText>
</Ww>
<Ww>
<count>8</count>
<WinNumber>1</WinNumber>
<ItemText>NUC_send,0x0A</ItemText>
</Ww>
<Ww>
<count>9</count>
<WinNumber>1</WinNumber>
<ItemText>NUC_send</ItemText>
</Ww>
<Ww>
<count>10</count>
<WinNumber>1</WinNumber>
<ItemText>nuc_raw,0x0A</ItemText>
</Ww>
<Ww>
<count>11</count>
<WinNumber>1</WinNumber>
<ItemText>ang_58</ItemText>
</Ww>
<Ww>
<count>12</count>
<WinNumber>1</WinNumber>
<ItemText>ang_66</ItemText>
</Ww>
<Ww>
<count>13</count>
<WinNumber>1</WinNumber>
<ItemText>cmd_fromnuc,0x0A</ItemText>
</Ww>
<Ww>
<count>14</count>
<WinNumber>1</WinNumber>
<ItemText>Nuc,0x0A</ItemText>
</Ww>
<Ww>
<count>15</count>
<WinNumber>1</WinNumber>
<ItemText>rec_flag</ItemText>
</Ww>
<Ww>
<count>16</count>
<WinNumber>1</WinNumber>
<ItemText>ctrl</ItemText>
</Ww> </Ww>
</WatchWindow1> </WatchWindow1>
<Tracepoint> <Tracepoint>
@ -280,10 +225,10 @@
<pMultCmdsp></pMultCmdsp> <pMultCmdsp></pMultCmdsp>
<DebugDescription> <DebugDescription>
<Enable>1</Enable> <Enable>1</Enable>
<EnableFlashSeq>1</EnableFlashSeq> <EnableFlashSeq>0</EnableFlashSeq>
<EnableLog>0</EnableLog> <EnableLog>0</EnableLog>
<Protocol>2</Protocol> <Protocol>2</Protocol>
<DbgClock>10000000</DbgClock> <DbgClock>1000000</DbgClock>
</DebugDescription> </DebugDescription>
</TargetOption> </TargetOption>
</Target> </Target>
@ -322,7 +267,7 @@
<Group> <Group>
<GroupName>Application/User/Core</GroupName> <GroupName>Application/User/Core</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -462,7 +407,7 @@
<Group> <Group>
<GroupName>Drivers/STM32F4xx_HAL_Driver</GroupName> <GroupName>Drivers/STM32F4xx_HAL_Driver</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -734,7 +679,7 @@
<Group> <Group>
<GroupName>Drivers/CMSIS</GroupName> <GroupName>Drivers/CMSIS</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -754,7 +699,7 @@
<Group> <Group>
<GroupName>Middlewares/FreeRTOS</GroupName> <GroupName>Middlewares/FreeRTOS</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -938,7 +883,7 @@
<Group> <Group>
<GroupName>User/bsp</GroupName> <GroupName>User/bsp</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -1218,7 +1163,7 @@
<Group> <Group>
<GroupName>User/Algorithm</GroupName> <GroupName>User/Algorithm</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -1390,7 +1335,7 @@
<Group> <Group>
<GroupName>Application/User/USB_DEVICE/App</GroupName> <GroupName>Application/User/USB_DEVICE/App</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -1434,7 +1379,7 @@
<Group> <Group>
<GroupName>Application/User/USB_DEVICE/Target</GroupName> <GroupName>Application/User/USB_DEVICE/Target</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -1454,7 +1399,7 @@
<Group> <Group>
<GroupName>Middlewares/USB_Device_Library</GroupName> <GroupName>Middlewares/USB_Device_Library</GroupName>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>

View File

@ -17,8 +17,8 @@
<TargetCommonOption> <TargetCommonOption>
<Device>STM32F407IGHx</Device> <Device>STM32F407IGHx</Device>
<Vendor>STMicroelectronics</Vendor> <Vendor>STMicroelectronics</Vendor>
<PackID>Keil.STM32F4xx_DFP.3.0.0</PackID> <PackID>Keil.STM32F4xx_DFP.2.15.0</PackID>
<PackURL>https://www.keil.com/pack/</PackURL> <PackURL>http://www.keil.com/pack/</PackURL>
<Cpu>IRAM(0x20000000-0x2001BFFF) IRAM2(0x2001C000-0x2001FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4") TZ</Cpu> <Cpu>IRAM(0x20000000-0x2001BFFF) IRAM2(0x2001C000-0x2001FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4") TZ</Cpu>
<FlashUtilSpec></FlashUtilSpec> <FlashUtilSpec></FlashUtilSpec>
<StartupFile></StartupFile> <StartupFile></StartupFile>

Binary file not shown.

View File

@ -98,10 +98,8 @@ int8_t Chassis_Control(Chassis_t *c, CMD_t *ctrl, CAN_Output_t *out) {
c->pos088.bmi088.filtered_gyro.z = LowPassFilter2p_Apply(&(c->filled[0]), c->pos088.bmi088.gyro.z); c->pos088.bmi088.filtered_gyro.z = LowPassFilter2p_Apply(&(c->filled[0]), c->pos088.bmi088.gyro.z);
/*初始数据*/ /*初始数据*/
c->move_vec.Vx = 0;
c->move_vec.Vy = 0; c->NUC_send.send[0] = 0;
c->move_vec.Vw = 0;
c->to_nuc.send = 0;
c->sick_cali.is_reach = 0; c->sick_cali.is_reach = 0;
c->vofa_send[0]= KalmanFilter(&c->extKalman[0] , c->sick_cali.sick_dis[0]); c->vofa_send[0]= KalmanFilter(&c->extKalman[0] , c->sick_cali.sick_dis[0]);
@ -113,7 +111,6 @@ int8_t Chassis_Control(Chassis_t *c, CMD_t *ctrl, CAN_Output_t *out) {
switch (c->chassis_ctrl.ctrl) { switch (c->chassis_ctrl.ctrl) {
case RCcontrol: case RCcontrol:
c->to_nuc.send = 0;
switch (c->chassis_ctrl.mode) { switch (c->chassis_ctrl.mode) {
case Normal: case Normal:
c->move_vec.Vw = ctrl->Vw * 8000; c->move_vec.Vw = ctrl->Vw * 8000;
@ -131,8 +128,8 @@ int8_t Chassis_Control(Chassis_t *c, CMD_t *ctrl, CAN_Output_t *out) {
break; break;
case Chassis_Adjust_Sick: case Chassis_Adjust_Sick:
// sick_calibration(c, ctrl, out); sick_calibration(c, ctrl, out);
// c->to_nuc.send = (c->sick_cali.is_reach == 1) ? 1 : 0; c->NUC_send.send[0] = (c->sick_cali.is_reach == 1) ? 1 : 0;
break; break;
} }
@ -141,26 +138,26 @@ int8_t Chassis_Control(Chassis_t *c, CMD_t *ctrl, CAN_Output_t *out) {
case AUTO: case AUTO:
switch (c->chassis_ctrl.mode) { switch (c->chassis_ctrl.mode) {
case AUTO_MID360: case AUTO_MID360:
// c->move_vec.Vw = -ctrl->cmd_MID360.posw * 1000; c->move_vec.Vw = -ctrl->cmd_MID360.posw * 1000;
// c->move_vec.Vy = ctrl->cmd_MID360.posy * 1000; c->move_vec.Vy = ctrl->cmd_MID360.posy * 1000;
// c->move_vec.Vx = -ctrl->cmd_MID360.posx * 1000; c->move_vec.Vx = -ctrl->cmd_MID360.posx * 1000;
c->move_vec.Vw =-ctrl->cmd_MID360.posw * 3000;
abs_limit_fp(&c->move_vec.Vx, 5000.0f); abs_limit_fp(&c->move_vec.Vx, 5000.0f);
abs_limit_fp(&c->move_vec.Vy, 5000.0f); abs_limit_fp(&c->move_vec.Vy, 5000.0f);
abs_limit_fp(&c->move_vec.Vw, 5000.0f); abs_limit_fp(&c->move_vec.Vw, 5000.0f);
// c->NUC_send.send[0] = 1;
break; break;
case AUTO_MID360_Pitch: case AUTO_MID360_Pitch:
// c->move_vec.Vw = -ctrl->cmd_MID360.posw * 1000; c->move_vec.Vw = -ctrl->cmd_MID360.posw * 1000;
// c->move_vec.Vy = ctrl->cmd_MID360.posy * 1000; c->move_vec.Vy = ctrl->cmd_MID360.posy * 1000;
// c->move_vec.Vx = -ctrl->cmd_MID360.posx * 1000; c->move_vec.Vx = -ctrl->cmd_MID360.posx * 1000;
abs_limit_fp(&c->move_vec.Vx, 5000.0f); abs_limit_fp(&c->move_vec.Vx, 5000.0f);
abs_limit_fp(&c->move_vec.Vy, 5000.0f); abs_limit_fp(&c->move_vec.Vy, 5000.0f);
abs_limit_fp(&c->move_vec.Vw, 5000.0f); abs_limit_fp(&c->move_vec.Vw, 5000.0f);
break; break;
case REPOSITION: case AUTO_MID360_Adjust:
c->to_nuc.send = 1; c->move_vec.Vw = ctrl->Vw * 6000;
c->move_vec.Vx = ctrl->Vy * 6000;
c->move_vec.Vy = ctrl->Vx * 6000;
break; break;

View File

@ -103,6 +103,12 @@ typedef struct
fp32 Vw; fp32 Vw;
fp32 mul;//油门倍率 fp32 mul;//油门倍率
}ChassisMove_Vec; }ChassisMove_Vec;
typedef struct
{
fp32 send[4];
}NUC_send_t;
/** /**
* @brief * @brief
@ -188,10 +194,7 @@ typedef struct{
int is_reach; int is_reach;
}sick_cali; }sick_cali;
struct { NUC_send_t NUC_send;
fp32 send;
}to_nuc;
}Chassis_t; }Chassis_t;

View File

@ -75,7 +75,7 @@ static const ConfigParam_t param ={
/*投球*/ /*投球*/
.LaunchCfg = { .LaunchCfg = {
.m2006_init = -130.0f, // M2006初始角度 .m2006_init = -150.0f, // M2006初始角度
.m2006_trig = 0.0f, // M2006触发角度 .m2006_trig = 0.0f, // M2006触发角度
.go_pull_pos = -214.0f, // go上升去合并扳机扳机位置 .go_pull_pos = -214.0f, // go上升去合并扳机扳机位置
.go_up_speed = 12.0f, // 上升速度 .go_up_speed = 12.0f, // 上升速度
@ -88,15 +88,14 @@ static const ConfigParam_t param ={
.go_init = -50, //仅用在go上电初始位置 .go_init = -50, //仅用在go上电初始位置
.go_release_pos=-200, .go_release_pos=-200,
.Pitch_angle =66, .Pitch_angle =66,
.go_up_speed =12,
.go_down_speed =6,
}, },
.PassCfg={ .PassCfg={
.go_wait =-10, .go_wait =-10,
.go_release_pos =-150, .go_release_pos =-150,
.Pitch_angle=66, .Pitch_angle=66,
.go_up_speed =12, .go_up_speed =12,
.go_down_speed =6, .go_down_speed =5,
}, },
.MID360Cfg={ .MID360Cfg={

View File

@ -317,10 +317,6 @@ int8_t Pitch_Process(UP_t *u, CAN_Output_t *out,CMD_t *c)
up_motor_target_t *target=&u->motor_target ; up_motor_target_t *target=&u->motor_target ;
LaunchContext_t *LaunchContext = &u->LaunchContext; LaunchContext_t *LaunchContext = &u->LaunchContext;
// 可根据实际需要传入不同的起始和末位置,起始:当前位置 // 可根据实际需要传入不同的起始和末位置,起始:当前位置
LaunchContext->LaunchCfg.go_up_speed= cfg->go_up_speed;
LaunchContext->LaunchCfg.go_down_speed= cfg->go_down_speed
;
Pitch_Launch_Sequence(u, LaunchContext, u->motorfeedback.go_data.Pos, cfg->go_release_pos, out); Pitch_Launch_Sequence(u, LaunchContext, u->motorfeedback.go_data.Pos, cfg->go_release_pos, out);
@ -403,14 +399,7 @@ int8_t UP_AUTO_Control(UP_t *u,CAN_Output_t *out,CMD_t *c){
LaunchContext_t *LaunchContext = &u->LaunchContext; LaunchContext_t *LaunchContext = &u->LaunchContext;
MID360Context_t *MID360Context=&u->MID360Context; MID360Context_t *MID360Context=&u->MID360Context;
MID360Cfg_t *MID360Cfg = &u->MID360Context.MID360Cfg; MID360Cfg_t *MID360Cfg = &u->MID360Context.MID360Cfg;
if(u->MID360Context.Curve==CURVE_58){
MID360Cfg->go_release_pos=CurveChange(LowPassFilter2p_Apply(&u->filled[0],c->pos)-0.25,3.2,4.3,&u->MID360Context.Curve);
}
else {
MID360Cfg->go_release_pos=CurveChange(LowPassFilter2p_Apply(&u->filled[0],c->pos)-0.05,3.2,4.3,&u->MID360Context.Curve); MID360Cfg->go_release_pos=CurveChange(LowPassFilter2p_Apply(&u->filled[0],c->pos)-0.05,3.2,4.3,&u->MID360Context.Curve);
}
if (u->MID360Context.Curve == CURVE_58) { if (u->MID360Context.Curve == CURVE_58) {
target->Pitch_angle = 58; target->Pitch_angle = 58;
} else { } else {

View File

@ -73,8 +73,6 @@ typedef struct {
fp32 go_init; // GO电机触发位置,初始位置,后续更改用于发射的位置 fp32 go_init; // GO电机触发位置,初始位置,后续更改用于发射的位置
fp32 Pitch_angle; //俯仰角度以oid为准 fp32 Pitch_angle; //俯仰角度以oid为准
fp32 go_release_pos;//go松开发射位置 fp32 go_release_pos;//go松开发射位置
fp32 go_up_speed;
fp32 go_down_speed;
} PitchCfg_t; } PitchCfg_t;

View File

@ -70,6 +70,7 @@ int8_t GO_SendData( GO_MotorData_t *go_data,GO_MotorCmd_t *go_cmd,float pos, flo
static float curve_66(float d) { static float curve_66(float d) {
return 3.7028f * d * d + 11.2126f * d -142.9446f; return 3.7028f * d * d + 11.2126f * d -142.9446f;
} }
// 计算58度曲线偏下 // 计算58度曲线偏下
// 计算58度曲线偏下 // 计算58度曲线偏下
static float curve_58(float d) { static float curve_58(float d) {
@ -82,9 +83,6 @@ static float curve_58(float d) {
线x重合区 线x重合区
*/ */
int abdddd=0; int abdddd=0;
fp32 ang_58;
fp32 ang_66;
float CurveChange(float d, float x, float y, CurveType *cs) float CurveChange(float d, float x, float y, CurveType *cs)
{ {
if (d<3.2) abdddd++; if (d<3.2) abdddd++;
@ -100,10 +98,8 @@ float CurveChange(float d, float x, float y, CurveType *cs)
// 根据当前曲线返回结果 // 根据当前曲线返回结果
if (*cs == CURVE_58) { if (*cs == CURVE_58) {
ang_58=d;
return curve_58(d); return curve_58(d);
} else { } else {
ang_66=d;
return curve_66(d); return curve_66(d);
} }
} }

View File

@ -83,7 +83,7 @@ typedef struct __attribute__((packed)) {
typedef struct __attribute__((packed)) typedef struct __attribute__((packed))
{ {
fp32 status; uint8_t status;
} Protocol_UpDataCMD_t; } Protocol_UpDataCMD_t;
/* 视觉 -> 电控 上层机构数据结构体*/ /* 视觉 -> 电控 上层机构数据结构体*/

View File

@ -113,16 +113,6 @@ int8_t CMD_ParseNuc(CMD_t *cmd,CMD_NUC_t *n){
break; break;
default:
cmd->cmd_MID360.posx = 0;
cmd->cmd_MID360.posy = 0;
cmd->cmd_MID360.posw = 0;
cmd->pos =0 ;
break ;
} }
return 0; return 0;
@ -169,7 +159,7 @@ int8_t CMD_DR16(CMD_t *cmd,const CMD_RC_t *rc) {
if(rc->dr16.sw_r ==CMD_SW_MID) cmd ->CMD_mode =AUTO_MID360; //左中,右中,无模式 if(rc->dr16.sw_r ==CMD_SW_MID) cmd ->CMD_mode =AUTO_MID360; //左中,右中,无模式
if(rc->dr16.sw_r ==CMD_SW_DOWN) cmd ->CMD_mode =REPOSITION; //左中,右下,视觉 if(rc->dr16.sw_r ==CMD_SW_DOWN) cmd ->CMD_mode =Normal; //左中,右下,视觉
} }
else if(rc->dr16.sw_l==CMD_SW_DOWN) else if(rc->dr16.sw_l==CMD_SW_DOWN)
@ -203,7 +193,7 @@ int8_t CMD_LD(CMD_t *cmd,const CMD_RC_t *rc){
if(cmd ->CMD_CtrlType ==AUTO){ if(cmd ->CMD_CtrlType ==AUTO){
/*自动下的*/ /*自动下的*/
if (rc->LD.key_C ==CMD_SW_UP) cmd ->CMD_mode =Normal; if (rc->LD.key_C ==CMD_SW_UP) cmd ->CMD_mode =AUTO_MID360_Adjust;
else { else {
if(rc->LD.key_E ==CMD_SW_DOWN ) cmd ->CMD_mode =Normal; if(rc->LD.key_E ==CMD_SW_DOWN ) cmd ->CMD_mode =Normal;

View File

@ -26,7 +26,7 @@ typedef enum{
AUTO_MID360, AUTO_MID360,
AUTO_MID360_Pitch, AUTO_MID360_Pitch,
REPOSITION,//雷达调整 AUTO_MID360_Adjust,//雷达调整
UP_Adjust,//上层调整 UP_Adjust,//上层调整
Chassis_Adjust_Sick, Chassis_Adjust_Sick,
@ -44,7 +44,6 @@ typedef enum{
typedef struct { typedef struct {
uint8_t status_fromnuc; uint8_t status_fromnuc;
uint8_t ctrl_status; uint8_t ctrl_status;
struct struct
{ {
fp32 vx; fp32 vx;

View File

@ -170,34 +170,28 @@ int8_t NUC_PackIMU(NUC_t *nuc, const AHRS_Quaternion_t *quat, const AHRS_Accl_t
int8_t NUC_PackCMD(NUC_t *nuc, const NUC_send_t *send){ int8_t NUC_PackCMD(NUC_t *nuc, const NUC_send_t *send){
nuc->to_nuc.cmd.head = HEAD; nuc->to_nuc.cmd.head = HEAD;
nuc->to_nuc.cmd.id = IMU_ID; nuc->to_nuc.cmd.id = IMU_ID;
nuc->to_nuc.cmd.type = TYPE;
nuc->to_nuc.cmd.end = TAIL; nuc->to_nuc.cmd.end = TAIL;
memcpy((void *)&(nuc->to_nuc.cmd.package.status), (const void *)send,sizeof(*send)); // memcpy((void *)&(nuc->to_nuc.cmd.package.status), (const void *)send,sizeof(*send));
/*在这里添加你们的控制命令*/ /*在这里添加你们的控制命令*/
return DEVICE_OK; return DEVICE_OK;
} }
int8_t NUC_StartSend(NUC_t *nuc, bool cmd_update){ int8_t NUC_StartSend(NUC_t *nuc, bool cmd_update){
if (cmd_update) { if (cmd_update) {
// if (HAL_UART_Transmit_DMA(
// BSP_UART_GetHandle(BSP_UART_NUC), (uint8_t *)&(nuc->to_nuc.cmd),
// sizeof(nuc->to_nuc.cmd) + sizeof(nuc->to_nuc.imu)) == HAL_OK)
/*仅发送cmd数据*/
if (HAL_UART_Transmit_DMA( if (HAL_UART_Transmit_DMA(
BSP_UART_GetHandle(BSP_UART_NUC), (uint8_t *)&(nuc->to_nuc.cmd), BSP_UART_GetHandle(BSP_UART_NUC), (uint8_t *)&(nuc->to_nuc.cmd),
sizeof(nuc->to_nuc.cmd) ) == HAL_OK) sizeof(nuc->to_nuc.cmd) + sizeof(nuc->to_nuc.imu)) == HAL_OK)
return DEVICE_OK;
else
return DEVICE_ERR;
} else {
if (HAL_UART_Transmit_DMA(BSP_UART_GetHandle(BSP_UART_NUC),
(uint8_t *)&(nuc->to_nuc.imu),
sizeof(nuc->to_nuc.imu)) == HAL_OK)
return DEVICE_OK; return DEVICE_OK;
else else
return DEVICE_ERR; return DEVICE_ERR;
} }
// else {
// if (HAL_UART_Transmit_DMA(BSP_UART_GetHandle(BSP_UART_NUC),
// (uint8_t *)&(nuc->to_nuc.imu),
// sizeof(nuc->to_nuc.imu)) == HAL_OK)
// return DEVICE_OK;
// else
// return DEVICE_ERR;
// }
} }

View File

@ -9,11 +9,6 @@
#include "Algorithm/ahrs.h" #include "Algorithm/ahrs.h"
#include "Module/Chassis.h" #include "Module/Chassis.h"
typedef struct
{
fp32 send;
}NUC_send_t;
typedef struct { typedef struct {
uint8_t id; uint8_t id;
@ -30,6 +25,7 @@ typedef struct {
typedef struct { typedef struct {
uint8_t head; uint8_t head;
uint8_t type; // 0x01 控制帧
uint8_t id; uint8_t id;
Protocol_UpDataCMD_t package; Protocol_UpDataCMD_t package;
uint8_t end; uint8_t end;

View File

@ -88,7 +88,7 @@ void Task_Chassis(void *argument)
osMessageQueueReset(task_runtime.msgq.can.output.chassis3508);//清空队列 osMessageQueueReset(task_runtime.msgq.can.output.chassis3508);//清空队列
osMessageQueuePut(task_runtime.msgq.can.output.chassis3508, &out.motor_CHASSIS3508, 0, 0); //发送数据 osMessageQueuePut(task_runtime.msgq.can.output.chassis3508, &out.motor_CHASSIS3508, 0, 0); //发送数据
osMessageQueueReset(task_runtime.msgq.cmd.raw.nuc_send);//清空队列 osMessageQueueReset(task_runtime.msgq.cmd.raw.nuc_send);//清空队列
osMessageQueuePut(task_runtime.msgq.cmd.raw.nuc_send, &chassis.to_nuc, 0, 0); //发送数据 osMessageQueuePut(task_runtime.msgq.cmd.raw.nuc_send, &chassis.NUC_send, 0, 0); //发送数据
vofa_send[0] = chassis.vofa_send[0]; vofa_send[0] = chassis.vofa_send[0];
vofa_send[1] = chassis.vofa_send[1]; vofa_send[1] = chassis.vofa_send[1];
vofa_send[2] = chassis.vofa_send[2]; vofa_send[2] = chassis.vofa_send[2];

View File

@ -16,7 +16,7 @@ static CMD_NUC_t Nuc;
#endif #endif
int rec_flag=0;
void Task_cmd(void *argument){ void Task_cmd(void *argument){
(void)argument; /*未使用传递参数 消除警告*/ (void)argument; /*未使用传递参数 消除警告*/
@ -40,14 +40,12 @@ void Task_cmd(void *argument){
/*将各任务接收到的原始数据解析为通用的控制命令*/ /*将各任务接收到的原始数据解析为通用的控制命令*/
if((osMessageQueueGet(task_runtime.msgq.cmd.raw.nuc, &Nuc,0 ,0) ==osOK)){ //nuc /*注意不能将nuc和码盘导航一块使用*/
}
else if(osMessageQueueGet(task_runtime.msgq.cmd.raw.nuc, &Nuc,0 ,0) ==osOK) //nuc
{
memset(&Nuc, 0, sizeof(CMD_NUC_t));
}
CMD_ParseNuc(&cmd,&Nuc); CMD_ParseNuc(&cmd,&Nuc);
if(osMessageQueueGet(task_runtime.msgq.cmd.raw.rc, &rc_ctrl, 0, 0) == osOK)//遥控器 if(osMessageQueueGet(task_runtime.msgq.cmd.raw.rc, &rc_ctrl, 0, 0) == osOK)//遥控器
CMD_ParseRc(&cmd, &rc_ctrl); CMD_ParseRc(&cmd, &rc_ctrl);

View File

@ -11,7 +11,7 @@
#include "task\user_task.h" #include "task\user_task.h"
#include "can_use.h" #include "can_use.h"
#include "cmd.h" #include "cmd.h"
#include "nuc.h"
/* Private typedef ---------------------------------------------------------- */ /* Private typedef ---------------------------------------------------------- */
/* Private define ----------------------------------------------------------- */ /* Private define ----------------------------------------------------------- */
/* Private macro ------------------------------------------------------------ */ /* Private macro ------------------------------------------------------------ */

View File

@ -23,8 +23,6 @@ fp32 send[4]={11.0f,45.0,1.f,4.0f};
int a=0; int a=0;
void Task_nuc(void *argument){ void Task_nuc(void *argument){
(void)argument; /**/ (void)argument; /**/
@ -47,37 +45,29 @@ void Task_nuc(void *argument){
last_online_tick = tick; last_online_tick = tick;
} }
else{ else{
if (tick - last_online_tick > 300) if (tick - last_online_tick > 300) NUC_HandleOffline(&cmd_fromnuc, &nuc_raw);
NUC_HandleOffline(&cmd_fromnuc, &nuc_raw);
} }
if (nuc_raw.unc_online) { if (nuc_raw.unc_online) {
osMessageQueueReset(task_runtime.msgq.cmd.raw.nuc); osMessageQueueReset(task_runtime.msgq.cmd.raw.nuc);
osMessageQueuePut(task_runtime.msgq.cmd.raw.nuc,&(cmd_fromnuc),0,0); osMessageQueuePut(task_runtime.msgq.cmd.raw.nuc,&(cmd_fromnuc),0,0);
} }
else
osMessageQueueReset(task_runtime.msgq.cmd.raw.nuc);
osMessageQueueGet(task_runtime.msgq.nuc.quat, &(quat), NULL, 0); osMessageQueueGet(task_runtime.msgq.nuc.quat, &(quat), NULL, 0);
osMessageQueueGet(task_runtime.msgq.nuc.accl, &(accl), NULL, 0); osMessageQueueGet(task_runtime.msgq.nuc.accl, &(accl), NULL, 0);
osMessageQueueGet(task_runtime.msgq.nuc.gyro, &(gyro), NULL, 0); osMessageQueueGet(task_runtime.msgq.nuc.gyro, &(gyro), NULL, 0);
// osMessageQueueGet(task_runtime.msgq.cmd.raw.nuc_send, &NUC_send, NULL, 0);
bool cmd_update = (osMessageQueueGet(task_runtime.msgq.cmd.raw.nuc_send, bool cmd_update = (osMessageQueueGet(task_runtime.msgq.cmd.raw.nuc_send,
&(NUC_send), NULL, 0) == osOK); &(NUC_send), NULL, 0) == osOK);
// NUC_PackIMU(&nuc_raw, &quat, &accl, &gyro); NUC_PackIMU(&nuc_raw, &quat, &accl, &gyro);
if (cmd_update) { if (cmd_update) {
NUC_PackCMD(&nuc_raw,&NUC_send); NUC_PackCMD(&nuc_raw,&NUC_send);
NUC_StartSend(&nuc_raw,cmd_update);
} }
// NUC_StartSend(&nuc_raw, cmd_update); // NUC_StartSend(&nuc_raw, cmd_update);
tick += delay_tick; /* 计算下一个唤醒时刄1ķ*/ tick += delay_tick; /* 计算下一个唤醒时刄1ķ*/

View File

@ -18,7 +18,7 @@
#define TASK_FREQ_UP (900u) #define TASK_FREQ_UP (900u)
#define TASK_FREQ_CTRL_CMD (500u) #define TASK_FREQ_CTRL_CMD (500u)
#define TASK_FREQ_NUC (500u) #define TASK_FREQ_NUC (250u)
#define TASK_FREQ_CAN (1000u) #define TASK_FREQ_CAN (1000u)
#define TASK_FREQ_RC (1000u) #define TASK_FREQ_RC (1000u)