Compare commits
	
		
			No commits in common. "2e854ade02ce7e616e1f1029bfa438c3759bae73" and "6179339e825b4ae2426bb0f01b6f5ac18572a549" have entirely different histories.
		
	
	
		
			2e854ade02
			...
			6179339e82
		
	
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -17,7 +17,7 @@ | ||||
| *.dbg* | ||||
| *.uvguix.* | ||||
| .mxproject | ||||
| *.axf | ||||
|   | ||||
| RTE/ | ||||
| Templates/ | ||||
| Examples/ | ||||
|  | ||||
| @ -26,7 +26,7 @@ | ||||
|     <ToolsetNumber>0x4</ToolsetNumber> | ||||
|     <ToolsetName>ARM-ADS</ToolsetName> | ||||
|     <TargetOption> | ||||
|       <CLKADS>25000000</CLKADS> | ||||
|       <CLKADS>12000000</CLKADS> | ||||
|       <OPTTT> | ||||
|         <gFlags>1</gFlags> | ||||
|         <BeepAtEnd>1</BeepAtEnd> | ||||
| @ -117,6 +117,11 @@ | ||||
|         <pMon>BIN\CMSIS_AGDI.dll</pMon> | ||||
|       </DebugOpt> | ||||
|       <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> | ||||
|           <Number>0</Number> | ||||
|           <Key>ARMRTXEVENTFLAGS</Key> | ||||
| @ -140,7 +145,7 @@ | ||||
|         <SetRegEntry> | ||||
|           <Number>0</Number> | ||||
|           <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> | ||||
|           <Number>0</Number> | ||||
| @ -168,72 +173,12 @@ | ||||
|         <Ww> | ||||
|           <count>3</count> | ||||
|           <WinNumber>1</WinNumber> | ||||
|           <ItemText>UP,0x0A</ItemText> | ||||
|           <ItemText>huart->ErrorCode</ItemText> | ||||
|         </Ww> | ||||
|         <Ww> | ||||
|           <count>4</count> | ||||
|           <WinNumber>1</WinNumber> | ||||
|           <ItemText>chassis,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> | ||||
|           <ItemText>UP,0x0A</ItemText> | ||||
|         </Ww> | ||||
|       </WatchWindow1> | ||||
|       <Tracepoint> | ||||
| @ -280,10 +225,10 @@ | ||||
|       <pMultCmdsp></pMultCmdsp> | ||||
|       <DebugDescription> | ||||
|         <Enable>1</Enable> | ||||
|         <EnableFlashSeq>1</EnableFlashSeq> | ||||
|         <EnableFlashSeq>0</EnableFlashSeq> | ||||
|         <EnableLog>0</EnableLog> | ||||
|         <Protocol>2</Protocol> | ||||
|         <DbgClock>10000000</DbgClock> | ||||
|         <DbgClock>1000000</DbgClock> | ||||
|       </DebugDescription> | ||||
|     </TargetOption> | ||||
|   </Target> | ||||
| @ -322,7 +267,7 @@ | ||||
| 
 | ||||
|   <Group> | ||||
|     <GroupName>Application/User/Core</GroupName> | ||||
|     <tvExp>0</tvExp> | ||||
|     <tvExp>1</tvExp> | ||||
|     <tvExpOptDlg>0</tvExpOptDlg> | ||||
|     <cbSel>0</cbSel> | ||||
|     <RteFlg>0</RteFlg> | ||||
| @ -462,7 +407,7 @@ | ||||
| 
 | ||||
|   <Group> | ||||
|     <GroupName>Drivers/STM32F4xx_HAL_Driver</GroupName> | ||||
|     <tvExp>0</tvExp> | ||||
|     <tvExp>1</tvExp> | ||||
|     <tvExpOptDlg>0</tvExpOptDlg> | ||||
|     <cbSel>0</cbSel> | ||||
|     <RteFlg>0</RteFlg> | ||||
| @ -734,7 +679,7 @@ | ||||
| 
 | ||||
|   <Group> | ||||
|     <GroupName>Drivers/CMSIS</GroupName> | ||||
|     <tvExp>0</tvExp> | ||||
|     <tvExp>1</tvExp> | ||||
|     <tvExpOptDlg>0</tvExpOptDlg> | ||||
|     <cbSel>0</cbSel> | ||||
|     <RteFlg>0</RteFlg> | ||||
| @ -754,7 +699,7 @@ | ||||
| 
 | ||||
|   <Group> | ||||
|     <GroupName>Middlewares/FreeRTOS</GroupName> | ||||
|     <tvExp>0</tvExp> | ||||
|     <tvExp>1</tvExp> | ||||
|     <tvExpOptDlg>0</tvExpOptDlg> | ||||
|     <cbSel>0</cbSel> | ||||
|     <RteFlg>0</RteFlg> | ||||
| @ -938,7 +883,7 @@ | ||||
| 
 | ||||
|   <Group> | ||||
|     <GroupName>User/bsp</GroupName> | ||||
|     <tvExp>0</tvExp> | ||||
|     <tvExp>1</tvExp> | ||||
|     <tvExpOptDlg>0</tvExpOptDlg> | ||||
|     <cbSel>0</cbSel> | ||||
|     <RteFlg>0</RteFlg> | ||||
| @ -1218,7 +1163,7 @@ | ||||
| 
 | ||||
|   <Group> | ||||
|     <GroupName>User/Algorithm</GroupName> | ||||
|     <tvExp>0</tvExp> | ||||
|     <tvExp>1</tvExp> | ||||
|     <tvExpOptDlg>0</tvExpOptDlg> | ||||
|     <cbSel>0</cbSel> | ||||
|     <RteFlg>0</RteFlg> | ||||
| @ -1390,7 +1335,7 @@ | ||||
| 
 | ||||
|   <Group> | ||||
|     <GroupName>Application/User/USB_DEVICE/App</GroupName> | ||||
|     <tvExp>0</tvExp> | ||||
|     <tvExp>1</tvExp> | ||||
|     <tvExpOptDlg>0</tvExpOptDlg> | ||||
|     <cbSel>0</cbSel> | ||||
|     <RteFlg>0</RteFlg> | ||||
| @ -1434,7 +1379,7 @@ | ||||
| 
 | ||||
|   <Group> | ||||
|     <GroupName>Application/User/USB_DEVICE/Target</GroupName> | ||||
|     <tvExp>0</tvExp> | ||||
|     <tvExp>1</tvExp> | ||||
|     <tvExpOptDlg>0</tvExpOptDlg> | ||||
|     <cbSel>0</cbSel> | ||||
|     <RteFlg>0</RteFlg> | ||||
| @ -1454,7 +1399,7 @@ | ||||
| 
 | ||||
|   <Group> | ||||
|     <GroupName>Middlewares/USB_Device_Library</GroupName> | ||||
|     <tvExp>0</tvExp> | ||||
|     <tvExp>1</tvExp> | ||||
|     <tvExpOptDlg>0</tvExpOptDlg> | ||||
|     <cbSel>0</cbSel> | ||||
|     <RteFlg>0</RteFlg> | ||||
|  | ||||
| @ -17,8 +17,8 @@ | ||||
|         <TargetCommonOption> | ||||
|           <Device>STM32F407IGHx</Device> | ||||
|           <Vendor>STMicroelectronics</Vendor> | ||||
|           <PackID>Keil.STM32F4xx_DFP.3.0.0</PackID> | ||||
|           <PackURL>https://www.keil.com/pack/</PackURL> | ||||
|           <PackID>Keil.STM32F4xx_DFP.2.15.0</PackID> | ||||
|           <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> | ||||
|           <FlashUtilSpec></FlashUtilSpec> | ||||
|           <StartupFile></StartupFile> | ||||
|  | ||||
										
											Binary file not shown.
										
									
								
							| @ -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->move_vec.Vx = 0; | ||||
|     c->move_vec.Vy = 0; | ||||
|     c->move_vec.Vw = 0; | ||||
|     c->to_nuc.send = 0; | ||||
| 
 | ||||
|     c->NUC_send.send[0] = 0; | ||||
|     c->sick_cali.is_reach = 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) { | ||||
|         case RCcontrol: | ||||
| 					c->to_nuc.send = 0; | ||||
|             switch (c->chassis_ctrl.mode) { | ||||
|                 case Normal: | ||||
|                     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; | ||||
|                 case Chassis_Adjust_Sick: | ||||
| 									 | ||||
| //                    sick_calibration(c, ctrl, out);
 | ||||
| //                    c->to_nuc.send  = (c->sick_cali.is_reach == 1) ? 1 : 0;
 | ||||
|                     sick_calibration(c, ctrl, out); | ||||
|                     c->NUC_send.send[0] = (c->sick_cali.is_reach == 1) ? 1 : 0; | ||||
|                     break; | ||||
| 
 | ||||
|             } | ||||
| @ -141,26 +138,26 @@ int8_t Chassis_Control(Chassis_t *c, CMD_t *ctrl, CAN_Output_t *out) { | ||||
|         case AUTO: | ||||
|             switch (c->chassis_ctrl.mode) { | ||||
|                 case AUTO_MID360: | ||||
| //                    c->move_vec.Vw = -ctrl->cmd_MID360.posw  * 1000;
 | ||||
| //                    c->move_vec.Vy = ctrl->cmd_MID360.posy * 1000;
 | ||||
| //                    c->move_vec.Vx = -ctrl->cmd_MID360.posx * 1000;
 | ||||
| 								c->move_vec.Vw =-ctrl->cmd_MID360.posw  * 3000; | ||||
| 
 | ||||
|                     c->move_vec.Vw = -ctrl->cmd_MID360.posw  * 1000; | ||||
|                     c->move_vec.Vy = ctrl->cmd_MID360.posy * 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.Vy, 5000.0f); | ||||
|                     abs_limit_fp(&c->move_vec.Vw, 5000.0f); | ||||
| 								    | ||||
| 								   // c->NUC_send.send[0] = 1;
 | ||||
|                     break; | ||||
|                 case AUTO_MID360_Pitch: | ||||
| //                    c->move_vec.Vw = -ctrl->cmd_MID360.posw  * 1000;
 | ||||
| //                    c->move_vec.Vy = ctrl->cmd_MID360.posy * 1000;
 | ||||
| //                    c->move_vec.Vx = -ctrl->cmd_MID360.posx * 1000;
 | ||||
|                     c->move_vec.Vw = -ctrl->cmd_MID360.posw  * 1000; | ||||
|                     c->move_vec.Vy = ctrl->cmd_MID360.posy * 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.Vy, 5000.0f); | ||||
|                     abs_limit_fp(&c->move_vec.Vw, 5000.0f);  | ||||
|                     break; | ||||
|                 case REPOSITION: | ||||
|                     c->to_nuc.send = 1; | ||||
|                 case AUTO_MID360_Adjust: | ||||
|                     c->move_vec.Vw = ctrl->Vw * 6000; | ||||
|                     c->move_vec.Vx = ctrl->Vy * 6000; | ||||
|                     c->move_vec.Vy = ctrl->Vx * 6000; | ||||
|                      | ||||
|                     break; | ||||
| 
 | ||||
|  | ||||
| @ -103,6 +103,12 @@ typedef struct | ||||
|    fp32 Vw; | ||||
| 	fp32 mul;//油门倍率
 | ||||
| }ChassisMove_Vec; | ||||
| typedef struct  | ||||
| { | ||||
| 	 | ||||
|    fp32 send[4]; | ||||
| 	 | ||||
| }NUC_send_t; | ||||
| 
 | ||||
| /**
 | ||||
|  *  @brief   | ||||
| @ -188,10 +194,7 @@ typedef struct{ | ||||
| 	int is_reach; | ||||
| 	}sick_cali; | ||||
| 	 | ||||
| 	struct { | ||||
| 	fp32 send; | ||||
| 	}to_nuc; | ||||
| 
 | ||||
| 	NUC_send_t NUC_send; | ||||
| 
 | ||||
| 	 | ||||
| }Chassis_t; | ||||
|  | ||||
| @ -75,7 +75,7 @@ static const ConfigParam_t param ={ | ||||
| 
 | ||||
|     /*投球*/ | ||||
|     .LaunchCfg = { | ||||
|     .m2006_init = -130.0f,    // M2006初始角度
 | ||||
|     .m2006_init = -150.0f,    // M2006初始角度
 | ||||
|     .m2006_trig = 0.0f,       // M2006触发角度
 | ||||
|     .go_pull_pos = -214.0f,   // go上升去合并扳机,扳机位置
 | ||||
|     .go_up_speed = 12.0f,     // 上升速度
 | ||||
| @ -88,15 +88,14 @@ static const ConfigParam_t param ={ | ||||
| 		.go_init = -50,       //仅用在go上电,初始位置
 | ||||
| 	  .go_release_pos=-200, | ||||
| 		.Pitch_angle  =66, | ||||
|     .go_up_speed  =12, | ||||
| 		.go_down_speed =6, | ||||
| 
 | ||||
| },  | ||||
| 		.PassCfg={ | ||||
| 		.go_wait  =-10,    | ||||
| 	  .go_release_pos	=-150,		 | ||||
| 	  .Pitch_angle=66,  | ||||
|     .go_up_speed	=12, | ||||
|     .go_down_speed =6,			 | ||||
|     .go_down_speed =5,			 | ||||
| 		}, | ||||
|     .MID360Cfg={ | ||||
| 			 | ||||
|  | ||||
| @ -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 ; | ||||
|   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); | ||||
| 
 | ||||
|      | ||||
| @ -403,14 +399,7 @@ int8_t UP_AUTO_Control(UP_t *u,CAN_Output_t *out,CMD_t *c){ | ||||
| 	    LaunchContext_t *LaunchContext = &u->LaunchContext; | ||||
| 	    MID360Context_t *MID360Context=&u->MID360Context; | ||||
| 	    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); | ||||
| 		 | ||||
| 	} | ||||
| 	 | ||||
| 			if (u->MID360Context.Curve == CURVE_58) { | ||||
|         target->Pitch_angle = 58; | ||||
| 				} else { | ||||
|  | ||||
| @ -73,8 +73,6 @@ typedef struct { | ||||
|     fp32 go_init;     // GO电机触发位置,初始位置,后续更改用于发射的位置	  
 | ||||
| 	  fp32 Pitch_angle;  //俯仰角度,以oid为准	  
 | ||||
| 	  fp32 go_release_pos;//go松开,发射位置
 | ||||
| 	fp32 go_up_speed; | ||||
| 	fp32 go_down_speed; | ||||
| 	 | ||||
| } PitchCfg_t; | ||||
| 
 | ||||
|  | ||||
| @ -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) { | ||||
| 			return  3.7028f * d * d + 11.2126f * d -142.9446f; | ||||
| 	} | ||||
| 
 | ||||
| // 计算58度曲线(偏下)
 | ||||
| // 计算58度曲线(偏下)
 | ||||
| static float curve_58(float d) { | ||||
| @ -82,9 +83,6 @@ static float curve_58(float d) { | ||||
|    曲线x重合区,根据当前函数和变化方向切换 | ||||
| */ | ||||
| int abdddd=0; | ||||
| fp32 ang_58; | ||||
| fp32 ang_66; | ||||
| 
 | ||||
| float CurveChange(float d, float x, float y, CurveType *cs) | ||||
| { | ||||
|     if (d<3.2) abdddd++; | ||||
| @ -100,10 +98,8 @@ float CurveChange(float d, float x, float y, CurveType *cs) | ||||
| 
 | ||||
|     // 根据当前曲线返回结果
 | ||||
|     if (*cs == CURVE_58) { | ||||
| 			ang_58=d; | ||||
|         return curve_58(d); | ||||
|     } else { | ||||
| 			ang_66=d; | ||||
|         return curve_66(d); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -83,7 +83,7 @@ typedef struct __attribute__((packed)) { | ||||
| 
 | ||||
|   typedef struct __attribute__((packed)) | ||||
|   { | ||||
|     fp32 status; | ||||
|     uint8_t status; | ||||
|   } Protocol_UpDataCMD_t; | ||||
| 
 | ||||
| /* 视觉 -> 电控 上层机构数据结构体*/ | ||||
|  | ||||
| @ -113,16 +113,6 @@ int8_t CMD_ParseNuc(CMD_t *cmd,CMD_NUC_t *n){ | ||||
| 
 | ||||
| 			break; | ||||
| 						 | ||||
| 			default: | ||||
| 			cmd->cmd_MID360.posx = 0; | ||||
| 			cmd->cmd_MID360.posy = 0; | ||||
| 			cmd->cmd_MID360.posw = 0; | ||||
| 			 | ||||
| 			cmd->pos =0 ; | ||||
| 			 | ||||
| 			 | ||||
| 			break ; | ||||
| 						 | ||||
| 
 | ||||
| 		} | ||||
|         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_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) | ||||
| @ -203,7 +193,7 @@ int8_t CMD_LD(CMD_t *cmd,const CMD_RC_t *rc){ | ||||
| 	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 { | ||||
| 		 | ||||
| 	if(rc->LD.key_E ==CMD_SW_DOWN ) cmd ->CMD_mode =Normal;  | ||||
|  | ||||
| @ -26,7 +26,7 @@ typedef  enum{ | ||||
| 	 | ||||
| 	  AUTO_MID360, | ||||
| 	  AUTO_MID360_Pitch, | ||||
| 	  REPOSITION,//雷达调整
 | ||||
| 	  AUTO_MID360_Adjust,//雷达调整
 | ||||
| 	 | ||||
| 	  UP_Adjust,//上层调整
 | ||||
|    	Chassis_Adjust_Sick, | ||||
| @ -44,7 +44,6 @@ typedef  enum{ | ||||
| typedef struct { | ||||
|  uint8_t  status_fromnuc; | ||||
|  uint8_t  ctrl_status;   | ||||
|     | ||||
|   struct  | ||||
|   { | ||||
|   fp32 vx; | ||||
|  | ||||
| @ -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){ | ||||
|   nuc->to_nuc.cmd.head = HEAD; | ||||
|   nuc->to_nuc.cmd.id = IMU_ID; | ||||
|   nuc->to_nuc.cmd.type = TYPE; | ||||
|   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; | ||||
| } | ||||
| 
 | ||||
| int8_t NUC_StartSend(NUC_t *nuc, bool 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( | ||||
|             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; | ||||
|     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;
 | ||||
| //    else
 | ||||
| //      return DEVICE_ERR;
 | ||||
| //  }
 | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -9,11 +9,6 @@ | ||||
| #include "Algorithm/ahrs.h" | ||||
| #include "Module/Chassis.h" | ||||
| 
 | ||||
| typedef struct  | ||||
| { | ||||
|    fp32 send; | ||||
| 	 | ||||
| }NUC_send_t; | ||||
| 
 | ||||
| typedef struct { | ||||
|   uint8_t id; | ||||
| @ -30,6 +25,7 @@ typedef struct { | ||||
| 
 | ||||
| typedef struct { | ||||
|   uint8_t head; | ||||
|   uint8_t type; // 0x01 控制帧
 | ||||
|   uint8_t id; | ||||
|   Protocol_UpDataCMD_t package; | ||||
|   uint8_t end; | ||||
|  | ||||
| @ -88,7 +88,7 @@ void Task_Chassis(void *argument) | ||||
| 		osMessageQueueReset(task_runtime.msgq.can.output.chassis3508);//清空队列
 | ||||
| 		osMessageQueuePut(task_runtime.msgq.can.output.chassis3508, &out.motor_CHASSIS3508, 0, 0);  //发送数据
 | ||||
| 		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[1] = chassis.vofa_send[1]; | ||||
| 	vofa_send[2] = chassis.vofa_send[2]; | ||||
|  | ||||
| @ -16,7 +16,7 @@ static CMD_NUC_t Nuc; | ||||
| #endif  | ||||
| 
 | ||||
| 
 | ||||
| int rec_flag=0; | ||||
| 
 | ||||
| 
 | ||||
| void Task_cmd(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	
 | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 		   memset(&Nuc, 0, sizeof(CMD_NUC_t)); | ||||
| 		} | ||||
| 		 /*注意,不能将nuc和码盘导航一块使用*/ | ||||
| 		  | ||||
| 		if(osMessageQueueGet(task_runtime.msgq.cmd.raw.nuc, &Nuc,0 ,0) ==osOK) //nuc
 | ||||
|       CMD_ParseNuc(&cmd,&Nuc); | ||||
| 		 | ||||
| 		 | ||||
| 		if(osMessageQueueGet(task_runtime.msgq.cmd.raw.rc, &rc_ctrl, 0, 0) == osOK)//遥控器
 | ||||
|       CMD_ParseRc(&cmd, &rc_ctrl); | ||||
| 		 | ||||
|  | ||||
| @ -11,7 +11,7 @@ | ||||
| #include "task\user_task.h" | ||||
| #include "can_use.h" | ||||
| #include "cmd.h" | ||||
| #include "nuc.h" | ||||
| 
 | ||||
| /* Private typedef ---------------------------------------------------------- */ | ||||
| /* Private define ----------------------------------------------------------- */ | ||||
| /* Private macro ------------------------------------------------------------ */ | ||||
|  | ||||
| @ -23,8 +23,6 @@ fp32 send[4]={11.0f,45.0,1.f,4.0f}; | ||||
| int a=0; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| void Task_nuc(void *argument){ | ||||
|  (void)argument; /**/ | ||||
| 
 | ||||
| @ -47,37 +45,29 @@ void Task_nuc(void *argument){ | ||||
|          last_online_tick = tick; | ||||
|       } | ||||
|       else{ | ||||
|         if (tick - last_online_tick > 300)  | ||||
| 					NUC_HandleOffline(&cmd_fromnuc, &nuc_raw); | ||||
|         if (tick - last_online_tick > 300) NUC_HandleOffline(&cmd_fromnuc, &nuc_raw); | ||||
|       } | ||||
| 
 | ||||
|       if (nuc_raw.unc_online) { | ||||
|         osMessageQueueReset(task_runtime.msgq.cmd.raw.nuc); | ||||
|         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.accl, &(accl), 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, | ||||
|                                          &(NUC_send), NULL, 0) == osOK); | ||||
| 
 | ||||
| //      NUC_PackIMU(&nuc_raw, &quat, &accl, &gyro);
 | ||||
|       NUC_PackIMU(&nuc_raw, &quat, &accl, &gyro); | ||||
|       if (cmd_update) { | ||||
|         NUC_PackCMD(&nuc_raw,&NUC_send); | ||||
| 				 | ||||
| 				NUC_StartSend(&nuc_raw,cmd_update); | ||||
| 
 | ||||
|       } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     // NUC_StartSend(&nuc_raw, cmd_update);
 | ||||
| 
 | ||||
| 		 tick += delay_tick; /* 计算下一个唤醒时刄1ķ*/ | ||||
|  | ||||
| @ -18,7 +18,7 @@ | ||||
| #define TASK_FREQ_UP (900u) | ||||
| 
 | ||||
| #define TASK_FREQ_CTRL_CMD (500u) | ||||
| #define TASK_FREQ_NUC (500u) | ||||
| #define TASK_FREQ_NUC (250u) | ||||
| #define TASK_FREQ_CAN (1000u) | ||||
| #define TASK_FREQ_RC (1000u) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user