同步原有英雄云台代码

This commit is contained in:
2025-11-03 10:46:54 +08:00
parent 5ea12ea563
commit 6504b5a614
37 changed files with 1591 additions and 8570 deletions

View File

@@ -104,23 +104,19 @@
{
"name": "Target 1",
"includePath": [
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\Start",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\Library",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\System",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\Algorithm",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\AHRS",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\Hardware",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\Motor",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\Function",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\Control",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\CarBody",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\User",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\Start",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\Library",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\System",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\Algorithm",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\AHRS",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\Hardware",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\Motor",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\Function",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\Control",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\CarBody",
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\User",
"C:\\Keil_v5\\ARM\\ARMCC\\include",
"C:\\Keil_v5\\ARM\\ARMCC\\include\\arm_linux",
"C:\\Keil_v5\\ARM\\ARMCC\\include\\arm_linux_compat",
"C:\\Keil_v5\\ARM\\ARMCC\\include\\libcxx",
"C:\\Keil_v5\\ARM\\ARMCC\\include\\rw",
"f:\\桌面\\V1.0\\new-infantry\\云台\\云台\\Carbody"
"f:\\Mas_Infantry_Control-main\\开源代码\\V1.0\\Hero\\云台\\云台\\Carbody"
],
"defines": [
"USE_STDPERIPH_DRIVER",

View File

@@ -44,54 +44,25 @@
[info] Log at : 2025/3/20|20:26:40|GMT+0800
[info] Log at : 2025/3/22|15:46:52|GMT+0800
[info] Log at : 2025/3/22|12:17:57|GMT+0800
[info] Log at : 2025/3/22|16:15:12|GMT+0800
[info] Log at : 2025/3/22|12:37:14|GMT+0800
[info] Log at : 2025/3/24|18:46:58|GMT+0800
[info] Log at : 2025/3/22|12:53:27|GMT+0800
[info] Log at : 2025/3/28|08:24:37|GMT+0800
[info] Log at : 2025/3/22|14:09:33|GMT+0800
[info] Log at : 2025/3/28|09:37:26|GMT+0800
[info] Log at : 2025/3/22|14:34:08|GMT+0800
[info] Log at : 2025/8/28|13:01:35|GMT+0800
[info] Log at : 2025/3/22|20:24:14|GMT+0800
[info] Log at : 2025/8/28|13:01:51|GMT+0800
[info] Log at : 2025/3/22|22:13:18|GMT+0800
[info] Log at : 2025/8/28|13:03:13|GMT+0800
[info] Log at : 2025/3/23|11:41:32|GMT+0800
[info] Log at : 2025/8/28|13:06:37|GMT+0800
[info] Log at : 2025/3/25|13:02:16|GMT+0800
[info] Log at : 2025/8/28|13:06:48|GMT+0800
[info] Log at : 2025/3/26|21:46:15|GMT+0800
[info] project closed: Project
[info] Log at : 2025/8/28|13:07:02|GMT+0800
[info] Log at : 2025/9/8|10:14:46|GMT+0800
[info] Log at : 2025/9/9|09:50:46|GMT+0800
[info] Log at : 2025/9/28|11:25:03|GMT+0800
[info] Log at : 2025/9/28|11:29:55|GMT+0800
[info] Log at : 2025/9/28|12:39:11|GMT+0800
[info] Log at : 2025/9/28|22:04:17|GMT+0800
[info] Log at : 2025/9/29|17:48:30|GMT+0800
[info] Log at : 2025/10/10|19:26:28|GMT+0800
[info] Log at : 2025/10/12|18:40:18|GMT+0800
[info] Log at : 2025/10/12|18:56:08|GMT+0800
[info] Log at : 2025/10/13|18:00:15|GMT+0800
[info] Log at : 2025/10/17|11:44:07|GMT+0800
[info] Log at : 2025/10/21|19:47:42|GMT+0800
[info] Log at : 2025/10/23|09:40:31|GMT+0800
[info] Log at : 2025/3/26|23:03:09|GMT+0800

View File

@@ -1,3 +1,3 @@
Load "f:\\<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\V1.0\\new-infantry\\<5C><>̨\\<5C><>̨\\Objects\\Project.axf"
Load "f:\\Mas_Infantry_Control-main\\<5C><>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>\\V1.0\\Hero\\<5C><>̨\\<5C><>̨\\Objects\\Project.axf"
Erase Done.Programming Done.Verify OK.Application running ...
Flash Load finished at 13:07:26
Flash Load finished at 17:24:51

View File

@@ -1 +1 @@
2025/10/23 13:07:27
2025/3/25 17:24:51

View File

@@ -18,16 +18,19 @@ KFP kfp_PITCH={0.02,0,0,0,0.01,0.543};//卡尔曼滤波器结构体
#define Gimbal_YawMotor GM6020_1//Yaw轴电机
#define Gimbal_PitchMotor GM6020_2//Pitch轴电机
#define Gimbal_L_FrictionWheel M3508_1//左摩擦轮
#define Gimbal_R_FrictionWheel M3508_2//右摩擦轮
#define Gimbal_L1_FrictionWheel M3508_1//左摩擦轮
#define Gimbal_R1_FrictionWheel M3508_2//右摩擦轮
#define Gimbal_L2_FrictionWheel M3508_3//左摩擦轮
#define Gimbal_R2_FrictionWheel M3508_4//右摩擦轮
#define Gimbal_RammerSpinMotor M3508_7//拨弹盘电机
uint8_t Gimbal_FrictionWheelFlag;//云台小陀螺标志位,云台开摩擦轮标志位
extern int KP , KI , KD;
PID_PositionInitTypedef Gimbal_YawAnglePositionPID,Gimbal_YawAngleSpeedPID;//Yaw轴GM6020电机PID
PID_PositionInitTypedef Gimbal_PitchAnglePositionPID,Gimbal_PitchAngleSpeedPID;//Pitch轴GM6020电机PID
PID_PositionInitTypedef Gimbal_L_FrictionWheelPID,Gimbal_R_FrictionWheelPID;//摩擦轮转速PID
PID_PositionInitTypedef Gimbal_L2_FrictionWheelPID,Gimbal_R2_FrictionWheelPID,Gimbal_L1_FrictionWheelPID,Gimbal_R1_FrictionWheelPID;//摩擦轮转速PID
PID_PositionInitTypedef Gimbal_RammerSpinSpeedPID;//拨弹盘旋转PID
/*
@@ -42,7 +45,6 @@ void Gimbal_Init(void)
PID_PositionSetParameter(&Gimbal_YawAnglePositionPID,140,0,0);
PID_PositionSetEkRange(&Gimbal_YawAnglePositionPID,-1,1);
PID_PositionSetOUTRange(&Gimbal_YawAnglePositionPID,-200,200);
PID_PositionStructureInit(&Gimbal_YawAngleSpeedPID,200);
PID_PositionSetParameter(&Gimbal_YawAngleSpeedPID,1000,0,1);
PID_PositionSetEkRange(&Gimbal_YawAngleSpeedPID,-1,1);
@@ -52,45 +54,53 @@ void Gimbal_Init(void)
PID_PositionSetParameter(&Gimbal_PitchAnglePositionPID,6,0,0);
PID_PositionSetEkRange(&Gimbal_PitchAnglePositionPID,-1,1);
PID_PositionSetOUTRange(&Gimbal_PitchAnglePositionPID,-150,150);
PID_PositionStructureInit(&Gimbal_PitchAngleSpeedPID,150);
PID_PositionSetParameter(&Gimbal_PitchAngleSpeedPID,200,0,0);
PID_PositionSetEkRange(&Gimbal_PitchAngleSpeedPID,-5,5);
PID_PositionSetOUTRange(&Gimbal_PitchAngleSpeedPID,-30000,30000);
*/
PID_PositionStructureInit(&Gimbal_YawAnglePositionPID,0);//Yaw轴陀螺仪闭环
PID_PositionSetParameter(&Gimbal_YawAnglePositionPID,8,0,40);
PID_PositionSetParameter(&Gimbal_YawAnglePositionPID,5,0,0.1);
PID_PositionSetEkRange(&Gimbal_YawAnglePositionPID,-1,1);
PID_PositionSetOUTRange(&Gimbal_YawAnglePositionPID,-200,200);
PID_PositionStructureInit(&Gimbal_YawAngleSpeedPID,200);
PID_PositionSetParameter(&Gimbal_YawAngleSpeedPID,300,0.1,150);
PID_PositionSetEkRange(&Gimbal_YawAngleSpeedPID,-5,5);
PID_PositionSetOUTRange(&Gimbal_YawAngleSpeedPID,-30000,30000);
PID_PositionSetParameter(&Gimbal_YawAngleSpeedPID,150,0,20);
PID_PositionSetEkRange(&Gimbal_YawAngleSpeedPID,-1,1);
PID_PositionSetOUTRange(&Gimbal_YawAngleSpeedPID,-50000,50000);
PID_PositionStructureInit(&Gimbal_PitchAnglePositionPID,0);//Pitch轴陀螺仪闭环
PID_PositionSetParameter(&Gimbal_PitchAnglePositionPID,15,0,0);
PID_PositionSetParameter(&Gimbal_PitchAnglePositionPID,5,0,0);
PID_PositionSetEkRange(&Gimbal_PitchAnglePositionPID,-1,1);
PID_PositionSetOUTRange(&Gimbal_PitchAnglePositionPID,-150,150);
PID_PositionStructureInit(&Gimbal_PitchAngleSpeedPID,150);
PID_PositionSetParameter(&Gimbal_PitchAngleSpeedPID,140,0,10);
PID_PositionSetEkRange(&Gimbal_PitchAngleSpeedPID,-5,5);
PID_PositionSetOUTRange(&Gimbal_PitchAngleSpeedPID,-500000,500000);
PID_PositionSetParameter(&Gimbal_PitchAngleSpeedPID,200,0,10);
PID_PositionSetEkRange(&Gimbal_PitchAngleSpeedPID,-0,0);
PID_PositionSetOUTRange(&Gimbal_PitchAngleSpeedPID,-30000,30000);
PID_PositionStructureInit(&Gimbal_L_FrictionWheelPID,0);//左摩擦轮
PID_PositionSetParameter(&Gimbal_L_FrictionWheelPID,16,0,30);
PID_PositionSetEkRange(&Gimbal_L_FrictionWheelPID,-5,5);
PID_PositionSetOUTRange(&Gimbal_L_FrictionWheelPID,-15000,15000);
PID_PositionStructureInit(&Gimbal_R_FrictionWheelPID,0);//右摩擦轮
PID_PositionSetParameter(&Gimbal_R_FrictionWheelPID,16,0,30);
PID_PositionSetEkRange(&Gimbal_R_FrictionWheelPID,-5,5);
PID_PositionSetOUTRange(&Gimbal_R_FrictionWheelPID,-15000,15000);
PID_PositionStructureInit(&Gimbal_L1_FrictionWheelPID,0);//左摩擦轮
PID_PositionSetParameter(&Gimbal_L1_FrictionWheelPID,0.1,0,0);
PID_PositionSetEkRange(&Gimbal_L1_FrictionWheelPID,-5,5);
PID_PositionSetOUTRange(&Gimbal_L1_FrictionWheelPID,-15000,15000);
PID_PositionStructureInit(&Gimbal_RammerSpinSpeedPID,-Gimbal_RammerSpeed);//拨弹盘
PID_PositionSetParameter(&Gimbal_RammerSpinSpeedPID,16,0,0);
PID_PositionStructureInit(&Gimbal_R1_FrictionWheelPID,0);//右摩擦轮
PID_PositionSetParameter(&Gimbal_R1_FrictionWheelPID,0.1,0,0);
PID_PositionSetEkRange(&Gimbal_R1_FrictionWheelPID,-5,5);
PID_PositionSetOUTRange(&Gimbal_R1_FrictionWheelPID,-15000,15000);
PID_PositionStructureInit(&Gimbal_L2_FrictionWheelPID,0);//左摩擦轮
PID_PositionSetParameter(&Gimbal_L2_FrictionWheelPID,0.1,0,0);
PID_PositionSetEkRange(&Gimbal_L2_FrictionWheelPID,-5,5);
PID_PositionSetOUTRange(&Gimbal_L2_FrictionWheelPID,-15000,15000);
PID_PositionStructureInit(&Gimbal_R2_FrictionWheelPID,0);//右摩擦轮
PID_PositionSetParameter(&Gimbal_R2_FrictionWheelPID,0.1,0,0);
PID_PositionSetEkRange(&Gimbal_R2_FrictionWheelPID,-5,5);
PID_PositionSetOUTRange(&Gimbal_R2_FrictionWheelPID,-15000,15000);
PID_PositionStructureInit(&Gimbal_RammerSpinSpeedPID,Gimbal_RammerSpeed);//拨弹盘
PID_PositionSetParameter(&Gimbal_RammerSpinSpeedPID,50,0,0);
PID_PositionSetEkRange(&Gimbal_RammerSpinSpeedPID,-20,20);
PID_PositionSetOUTRange(&Gimbal_RammerSpinSpeedPID,-30000,30000);
PID_PositionSetOUTRange(&Gimbal_RammerSpinSpeedPID,-2000,2000);
@@ -110,8 +120,10 @@ void Gimbal_CleanPID(void)
PID_PositionClean(&Gimbal_YawAngleSpeedPID);
PID_PositionClean(&Gimbal_PitchAnglePositionPID);
PID_PositionClean(&Gimbal_PitchAngleSpeedPID);
PID_PositionClean(&Gimbal_L_FrictionWheelPID);
PID_PositionClean(&Gimbal_R_FrictionWheelPID);
PID_PositionClean(&Gimbal_L1_FrictionWheelPID);
PID_PositionClean(&Gimbal_R1_FrictionWheelPID);
PID_PositionClean(&Gimbal_L2_FrictionWheelPID);
PID_PositionClean(&Gimbal_R2_FrictionWheelPID);
PID_PositionClean(&Gimbal_RammerSpinSpeedPID);
}
@@ -127,37 +139,29 @@ void Gimbal_CleanPID(void)
*/
void Gimbal_PitchControl(void)
{
float use_pitch=0,use_yaw=0,lastpitch=0,lastyaw=0;
if(Remote_StartFlag==2)Gimbal_PitchAnglePositionPID.Need_Value=0;//遥控器刚建立连接时,复位Pitch轴角度
if(((Remote_RxData.Remote_L_UD>1050 && RefereeSystem_Status==0) || (1024+Remote_RxData.Remote_Mouse_DU*3)<1000) && AttitudeAlgorithms_DegRoll>Pitch_GM6020AngleUpperLinit)
Gimbal_PitchAnglePositionPID.Need_Value-=Gimbal_LeverSpeedMapRate/8192.0f*360.0f;//通过遥控器或者鼠标获取俯仰情况
else if(((Remote_RxData.Remote_L_UD<1000 && RefereeSystem_Status==0) || (1024+Remote_RxData.Remote_Mouse_DU*3)>1050) && AttitudeAlgorithms_DegRoll<Pitch_GM6020AngleLowerLinit)
Gimbal_PitchAnglePositionPID.Need_Value+=Gimbal_LeverSpeedMapRate/8192.0f*360.0f;
if(Remote_RxData.Remote_LS==2 || Remote_RxData.Remote_Mouse_KeyR==1 )//自瞄,补偿角度
if(Remote_RxData.Remote_LS==2 && Visual_ReceiveFlag==1 || Remote_RxData.Remote_Mouse_KeyR==1 && Visual_ReceiveFlag==1 )//自瞄,补偿角度
{
Visual_ReceiveFlag=0;
use_pitch=0.5f*Visual_Pitch;
use_yaw=0.5f*Visual_Yaw;
if(GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Position>Pitch_GM6020PositionUpperLinit && Visual_Pitch>0)
Gimbal_PitchAnglePositionPID.Need_Value=AttitudeAlgorithms_DegRoll-(float)use_pitch-lastpitch;
if(GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Position<Pitch_GM6020PositionLowerLinit && Visual_Pitch<0)
Gimbal_PitchAnglePositionPID.Need_Value=AttitudeAlgorithms_DegRoll-(float)use_pitch-lastpitch;
Gimbal_YawAnglePositionPID.Need_Value=AttitudeAlgorithms_DegYaw+(float)use_yaw-lastyaw;
use_pitch=0,use_yaw=0;
if((GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Position-1000)>Pitch_GM6020PositionUpperLinit && Visual_Pitch>0)
Gimbal_PitchAnglePositionPID.Need_Value=AttitudeAlgorithms_DegRoll-(float)Visual_Pitch;
if((GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Position-1000)<Pitch_GM6020PositionLowerLinit && Visual_Pitch<0)
Gimbal_PitchAnglePositionPID.Need_Value=AttitudeAlgorithms_DegRoll-(float)Visual_Pitch;
Gimbal_YawAnglePositionPID.Need_Value=AttitudeAlgorithms_DegYaw+(float)Visual_Yaw;
Remote_RxData.Remote_Mouse_KeyPushR=0;
Remote_RxData.Remote_LS=0;
lastpitch=Visual_Pitch;
lastyaw=Visual_Yaw;
}
//串级PID闭环Pitch角
PID_PositionCalc(&Gimbal_PitchAnglePositionPID,AttitudeAlgorithms_DegRoll);
// Gimbal_PitchAnglePositionPID.OUT=kalmanFilter(&kfp_PITCH,Gimbal_PitchAnglePositionPID.OUT);
Gimbal_PitchAngleSpeedPID.Need_Value=Gimbal_PitchAnglePositionPID.OUT;
Gimbal_PitchAnglePositionPID.OUT=kalmanFilter(&kfp_PITCH,Gimbal_PitchAnglePositionPID.OUT);
Gimbal_PitchAngleSpeedPID.Need_Value=-Gimbal_PitchAnglePositionPID.OUT;
PID_PositionCalc(&Gimbal_PitchAngleSpeedPID,GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Speed);
@@ -198,17 +202,11 @@ void Gimbal_YawControl(void)
else
Gimbal_YawAnglePositionPID.Need_Value-=Gimbal_LeverSpeedMapRate*Gimbal_YawPitchSpeedRate*Gimbal_YawPitchSpeedRate*0.0439453125f*(PC_Spin*PC_Mouse_RLSensitivity/660.0f*2);
}
//串级PID闭环Yaw角
PID_PositionCalc(&Gimbal_YawAnglePositionPID,AttitudeAlgorithms_DegYaw);
Gimbal_YawAngleSpeedPID.Need_Value=Gimbal_YawAnglePositionPID.OUT;
PID_PositionCalc(&Gimbal_YawAngleSpeedPID,GM6020_MotorStatus[0].Speed);
//while(Gimbal_YawAngleSpeedPID.OUT > 65534 || Gimbal_YawAngleSpeedPID.OUT < -65534)
//PID_PositionClean(&Gimbal_YawAngleSpeedPID);
GM6020_CAN2SetLIDVoltage(Gimbal_YawAngleSpeedPID.OUT,0,0,0);
}
@@ -223,20 +221,24 @@ void Gimbal_FiringMechanismControl(void)
{
if(((Remote_RxData.Remote_LS==1 && RefereeSystem_Status==0) || PC_FrictionWheel==1) && RefereeSystem_ShooterStatus==1)//摩擦轮开
{
Gimbal_L_FrictionWheelPID.Need_Value=-Gimbal_FrictionWheelSpeed;Gimbal_R_FrictionWheelPID.Need_Value=Gimbal_FrictionWheelSpeed;
Gimbal_L1_FrictionWheelPID.Need_Value=-Gimbal_FrictionWheelSpeed;Gimbal_R1_FrictionWheelPID.Need_Value=Gimbal_FrictionWheelSpeed;
Gimbal_L2_FrictionWheelPID.Need_Value=Gimbal_FrictionWheelSpeed;Gimbal_R2_FrictionWheelPID.Need_Value=- Gimbal_FrictionWheelSpeed;
Laser_ON();//开激光
Gimbal_FrictionWheelFlag=1;
}
else//摩擦轮关
{
Gimbal_L_FrictionWheelPID.Need_Value=Gimbal_R_FrictionWheelPID.Need_Value=0;
Gimbal_L1_FrictionWheelPID.Need_Value=Gimbal_R1_FrictionWheelPID.Need_Value=Gimbal_L2_FrictionWheelPID.Need_Value=Gimbal_R2_FrictionWheelPID.Need_Value=0;
Laser_OFF();//关激光
Gimbal_FrictionWheelFlag=0;
}
PID_PositionCalc(&Gimbal_L_FrictionWheelPID,M3508_MotorStatus[Gimbal_L_FrictionWheel-0x201].RotorSpeed);
PID_PositionCalc(&Gimbal_R_FrictionWheelPID,M3508_MotorStatus[Gimbal_R_FrictionWheel-0x201].RotorSpeed);
M3508_CANSetLIDCurrent(Gimbal_L_FrictionWheelPID.OUT,Gimbal_R_FrictionWheelPID.OUT,0,0);
PID_PositionCalc(&Gimbal_L1_FrictionWheelPID,M3508_MotorStatus[Gimbal_L1_FrictionWheel-0x201].RotorSpeed);
PID_PositionCalc(&Gimbal_R1_FrictionWheelPID,M3508_MotorStatus[Gimbal_R1_FrictionWheel-0x201].RotorSpeed);
PID_PositionCalc(&Gimbal_L2_FrictionWheelPID,M3508_MotorStatus[Gimbal_L2_FrictionWheel-0x201].RotorSpeed);
PID_PositionCalc(&Gimbal_R2_FrictionWheelPID,M3508_MotorStatus[Gimbal_R2_FrictionWheel-0x201].RotorSpeed);
M3508_CANSetLIDCurrent(Gimbal_L1_FrictionWheelPID.OUT,Gimbal_R1_FrictionWheelPID.OUT,Gimbal_L2_FrictionWheelPID.OUT,Gimbal_R2_FrictionWheelPID.OUT);
}
/*
@@ -258,8 +260,11 @@ void Gimbal_Rammer(void)
}
else Gimbal_RammerSpinSpeedPID.Need_Value=0;
PID_PositionCalc(&Gimbal_RammerSpinSpeedPID,M2006_MotorStatus[6].RotorSpeed);
PID_PositionCalc(&Gimbal_RammerSpinSpeedPID,M3508_MotorStatus[Gimbal_RammerSpinMotor-0x201].RotorSpeed);
M2006_CANSetHIDCurrent(0,Gimbal_PitchAngleSpeedPID.OUT,Gimbal_RammerSpinSpeedPID.OUT,0);
//M3508_CANSetLIDCurrent(0,0,Gimbal_RammerSpinSpeedPID.OUT,0);
//M3508_CANSetHIDCurrent(0,0,Gimbal_RammerSpinSpeedPID.OUT,0);
}
@@ -274,12 +279,9 @@ void Gimbal_Rammer(void)
*/
void Gimbal_MoveControl(void)
{
//Raw Code//
//Gimbal_PitchControl();//云台Pitch轴控制
//Gimbal_YawControl();//云台Yaw轴控制
//Testing Code//
//暂时关闭云台控制
Gimbal_PitchControl();//云台Pitch轴控制
Gimbal_YawControl();//云台Yaw轴控制
Gimbal_FiringMechanismControl();//摩擦轮控制
Gimbal_Rammer();//拨弹盘控制
//UART2_Printf("%f,%f,%f,%f\n",Gimbal_PitchAngleSpeedPID.Need_Value,Gimbal_PitchAngleSpeedPID.Now_Value,Gimbal_PitchAnglePositionPID.Now_Value,Gimbal_PitchAnglePositionPID.Need_Value);

View File

@@ -7,19 +7,12 @@
#include"Delay.h"
#include "Buzzer.h"
#include "GM6020.h"
#include "PID.h"
#include <string.h>
#include <stdlib.h>
uint32_t Visual_Time=0;//视觉数据send时间
uint32_t Time_Out=0;//超时时间
uint32_t SystemCoreClock84=84000000; //84M
int KP , KI , KD;
int yaw=0 , pitch=0;
static char dataType; // 存储类型字段('r'/'b'/'u'
uint8_t USART_RX_BUF[100];//视觉数据jieshou缓冲区
extern PID_PositionInitTypedef Gimbal_YawAnglePositionPID,Gimbal_YawAngleSpeedPID;
@@ -68,9 +61,8 @@ void Visual_SendData(void)
UART2_SendByte((uint8_t)1);
UART2_SendByte((uint8_t)1);
*/
//UART2_Printf("%d,%d,%f,%f\n",GM6020_MotorStatus[0].Speed,GM6020_MotorStatus[0].Angle,Gimbal_YawAnglePositionPID.OUT,Gimbal_YawAngleSpeedPID.OUT);
UART2_Printf("%f %d",AttitudeAlgorithms_DegRoll,GM6020_MotorStatus[0].Position);
UART2_Printf("%d,%f,%f\n",Visual_ReceiveFlag,Visual_Yaw,Visual_Pitch);
//UART2_SendByte((uint8_t)'\n');
/*if(Visual_ReceiveFlag == 1)
UART2_Printf("%f %f %f %f \n",Visual_Yaw,Visual_Pitch,Visual_GetRoll,Visual_GetDelay);//*0.0030518509475997f*/
@@ -106,123 +98,11 @@ void USART1_IRQHandler(void)
USART_ClearITPendingBit(USART1,USART_IT_RXNE);//清除接收中断标志位
}
void Visual_Trans(void) {
//Visual_Yaw = -(float)yaw;
//Visual_Pitch = -(float)pitch;
// 全局变量(需在.h文件中声明
char Visual_Type = '\0'; // 存储类型r/b/u
uint8_t Visual_ReceiveFlag = 0; // 接收完成标志
// 静态变量(函数内部状态)
static char Visual_RxBuffer[32]; // 接收缓冲区(足够容纳最长帧)
static uint8_t RxState = 0; // 状态机0-等待#1-接收数据2-解析
static uint8_t RxIndex = 0; // 缓冲区索引
static uint32_t RxTimeoutTick = 0;// 超时计时器(毫秒)
// 每次调用处理一个UART接收字节UART2_RxData为当前接收的字节
uint8_t rx_byte = UART2_RxData;
// 接收新数据时重置超时计时器
RxTimeoutTick = 0;
switch (RxState) {
case 0: // 等待帧头'#'ASCII0x23
if (rx_byte == '#') {
RxState = 1;
RxIndex = 0;
memset(Visual_RxBuffer, 0, sizeof(Visual_RxBuffer)); // 清空缓冲区
}
break;
case 1: // 接收有效数据(直到遇到帧尾'*'
if (rx_byte == '*') { // 帧尾ASCII0x2A
RxState = 2;
} else {
// 限制缓冲区大小防止溢出预留1字节给结束符'\0'
if (RxIndex < sizeof(Visual_RxBuffer) - 1) {
Visual_RxBuffer[RxIndex++] = rx_byte;
} else {
// 缓冲区满,强制复位(防止内存溢出)
RxState = 0;
RxIndex = 0;
}
}
break;
case 2: // 解析接收的字符串
{
// 有效数据格式:"s r 207 -4"需包含4个字段
char *token = strtok(Visual_RxBuffer, " "); // 按空格分割
uint8_t field_idx = 0;
uint8_t parse_ok = 1; // 解析成功标志
char type = '\0';
while (token != NULL && field_idx < 4) { // 只处理前4个字段
switch (field_idx) {
case 0: // 校验包头's'ASCII0x73
if (strcmp(token, "s") != 0) {
parse_ok = 0; // 包头错误
}
break;
case 1: // 提取类型r/b/u
if (token[0] == 'r' || token[0] == 'b' || token[0] == 'u') {
type = token[0];
} else {
parse_ok = 0; // 类型错误
}
break;
case 2: // 转换yaw字符串→int
yaw = atoi(token);
break;
case 3: // 转换pitch字符串→int
pitch = atoi(token);
break;
}
token = strtok(NULL, " ");
field_idx++;
}
// 解析成功的条件:字段完整且包头/类型正确
if (parse_ok && field_idx == 4) {
Visual_Type = type;
Visual_GetYaw = yaw;
Visual_GetPitch = pitch;
// 角度转换(根据实际需求调整系数)
Visual_Yaw = -(float)yaw * 0.03051850947599f;
Visual_Pitch = -(float)pitch * 0.03051850947599f;
Visual_ReceiveFlag = 1; // 置位完成标志
}
// 解析完成,回到初始状态
RxState = 0;
RxIndex = 0;
}
break;
default:
// 异常状态复位
RxState = 0;
RxIndex = 0;
break;
}
}
/*
void Visual_Trans(void){
static int Visual_RxHEXPacket[20];
//char Message[10];
@@ -282,7 +162,4 @@ void Visual_Trans(void){
}
}
}
*/
}

View File

@@ -21,7 +21,6 @@ typedef struct
float I_OUT;//积分输出
float D_OUT;//微分输出
float OUT;//总输出
//double OUT;//总输出
float OUT_low;//输出限幅下限
float OUT_up;//输出限幅上限
}PID_PositionInitTypedef;//位置式PID参数结构体

View File

@@ -145,8 +145,8 @@ uint8_t CToC_MasterSendControl(void)
TxMessage.Data[3]=Remote_RxData.Remote_KeyPush_Shift;//键盘Shift状态
TxMessage.Data[4]=Remote_StartFlag;//遥控器启动标志位
TxMessage.Data[5]=Remote_RxData.Remote_LS;//遥控器左侧拨动开关
TxMessage.Data[6]=Remote_RxData.Remote_Key_Alpha1;
TxMessage.Data[7]=Remote_RxData.Remote_Key_Alpha2;
TxMessage.Data[6]=0;
TxMessage.Data[7]=0;
uint8_t mbox=CAN_Transmit(CAN2,&TxMessage);//发送数据并获取邮箱号
uint16_t i=0;

View File

@@ -12,7 +12,7 @@
/*==================== 报警列表 ====================
遥控器未连接 ················1s里红灯连闪两下
遥控器数据错误报警 ············红灯常亮
CAN总线设备连接异常············2s内蜂鸣器以高音6响n下,n为连接异常的设备在ID列表的索引(LinkCheck.h文件中LinkCheck_ErrorID变量)
CAN总线设备连接异常············2s内蜂鸣器以高音3响n下,n为连接异常的设备在ID列表的索引(LinkCheck.h文件中LinkCheck_ErrorID变量)
IST8310连接错误 ················绿灯以1s为周期闪烁
BMI088连接错误 ················1s里绿灯连闪两下
陀螺仪温度过高报警 ············绿灯常亮
@@ -100,7 +100,7 @@ void Warming_RemoteDataERROR(void)
*参数说明:无
*返回类型:无
*备注:闭环控制TIM6定时更新中断调用,定时2ms
*报警现象:2s内蜂鸣器以高音6响n下,n为连接异常的设备在ID列表的索引(LinkCheck.h文件中LinkCheck_ErrorID变量)
*报警现象:2s内蜂鸣器以高音3响n下,n为连接异常的设备在ID列表的索引(LinkCheck.h文件中LinkCheck_ErrorID变量)
*/
void Warming_LinkError(void)
{
@@ -110,7 +110,7 @@ void Warming_LinkError(void)
if(i<LinkCheck_ErrorID+1)//高音6响LinkCheck_ErrorID下
{
if(Counter==100*i+1)Buzzer_ON(H6);
if(Counter==100*i+1)Buzzer_ON(H3);
else if(Counter==100*i+51)Buzzer_ON(P);
else if(Counter==100*i+100)i++;
}

View File

@@ -173,9 +173,7 @@ void Remote_DataProcess(void)
Remote_RxData.Remote_KeyLast_Q=Remote_RxData.Remote_Key_Q;
Remote_RxData.Remote_KeyLast_E=Remote_RxData.Remote_Key_E;
Remote_RxData.Remote_KeyLast_Shift=Remote_RxData.Remote_Key_Shift;
Remote_RxData.Remote_KeyLast_Ctrl=Remote_RxData.Remote_Key_Ctrl;
Remote_RxData.Remote_KeyLast_Alpha1=Remote_RxData.Remote_Key_Alpha1;
Remote_RxData.Remote_KeyLast_Alpha2=Remote_RxData.Remote_Key_Alpha2;
Remote_RxData.Remote_KeyLast_Ctrl=Remote_RxData.Remote_Key_Ctrl;
//Remote_RxData.Remote_R_RL=(((uint16_t)Data[1]<<8) | Data[0]) & 0x07FF;//B[0:10],11bits
Remote_R_RL_True=(((uint16_t)Data[1]<<8) | Data[0]) & 0x07FF;//B[0:10],11bits
@@ -208,9 +206,6 @@ void Remote_DataProcess(void)
Remote_RxData.Remote_Key_Ctrl=(Data[14]>>5) & 0x01;//B[117:117],1bits
Remote_RxData.Remote_Key_Q=(Data[14]>>6) & 0x01;//B[118:118],1bits
Remote_RxData.Remote_Key_E=(Data[14]>>7) & 0x01;//B[119:119],1bits
Remote_RxData.Remote_Key_Alpha1=(Data[14]>>9) & 0x01;//B[118:118],1bits
Remote_RxData.Remote_Key_Alpha2=(Data[14]>>10) & 0x01;//B[119:119],1bits
Remote_RxData.Remote_ThumbWheel=(int16_t)((uint16_t)Data[17]<<8) | Data[16];//B[120:135],16bits
@@ -219,8 +214,6 @@ void Remote_DataProcess(void)
if(Remote_RxData.Remote_KeyLast_Shift==0 && Remote_RxData.Remote_Key_Shift==1)Remote_RxData.Remote_KeyPush_Shift=!Remote_RxData.Remote_KeyPush_Shift;
if(Remote_RxData.Remote_KeyLast_Ctrl==0 && Remote_RxData.Remote_Key_Ctrl==1)Remote_RxData.Remote_KeyPush_Ctrl=!Remote_RxData.Remote_KeyPush_Ctrl;
if(Remote_RxData.Remote_Mouse_KeyLastR==0 && Remote_RxData.Remote_Mouse_KeyR==1)Remote_RxData.Remote_Mouse_KeyPushR=1;
if(Remote_RxData.Remote_KeyLast_Alpha1==0 && Remote_RxData.Remote_Key_Alpha1==1)Remote_RxData.Remote_Key_Alpha1=1;
if(Remote_RxData.Remote_KeyLast_Alpha2==0 && Remote_RxData.Remote_Key_Alpha2==1)Remote_RxData.Remote_Key_Alpha2=1;
else Remote_RxData.Remote_Mouse_KeyPushR=0;
}

View File

@@ -25,12 +25,6 @@ typedef struct
uint8_t Remote_Key_E;//键盘E键,按下为1,未按下为0
uint8_t Remote_Key_Shift;//键盘Shift键,按下为1,未按下为0
uint8_t Remote_Key_Ctrl;//键盘Ctrl键,按下为1,未按下为0
uint8_t Remote_Key_Alpha1;//键盘1键,按下为1,未按下为0
uint8_t Remote_Key_Alpha2;//键盘2键,按下为1,未按下为0
uint8_t Remote_KeyLast_Alpha1;//上一次键盘Shift键
uint8_t Remote_KeyLast_Alpha2;//上一次键盘Ctrl键
uint8_t Remote_Mouse_KeyLastR;//上一次鼠标右键
uint8_t Remote_KeyLast_Q;//上一次键盘Q键

File diff suppressed because it is too large Load Diff

View File

@@ -1,2 +0,0 @@
[EXTDLL]
Count=0

Binary file not shown.

View File

@@ -21,62 +21,63 @@ Target DLL: CMSIS_AGDI.dll V1.33.24.0
Dialog DLL: TCM.DLL V1.56.6.0
<h2>Project:</h2>
C:\Users\LSMushui\Desktop\RM\Hero-C-Board-Legacy\<5C><>̨\<5C><>̨\Project.uvprojx
C:\Users\LSMushui\Desktop\RM\hero-test\Hero-C-Board-Legacy\<5C><>̨\<5C><>̨\Project.uvprojx
Project File Date: 11/02/2025
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\Bin'
Rebuild target 'Target 1'
assembling startup_stm32f40_41xxx.s...
compiling misc.c...
compiling stm32f4xx_exti.c...
compiling stm32f4xx_adc.c...
compiling stm32f4xx_dac.c...
compiling stm32f4xx_can.c...
compiling stm32f4xx_dma.c...
compiling stm32f4xx_dcmi.c...
compiling misc.c...
compiling stm32f4xx_cryp_des.c...
compiling stm32f4xx_dfsdm.c...
compiling stm32f4xx_flash_ramfunc.c...
compiling system_stm32f4xx.c...
compiling stm32f4xx_cryp_tdes.c...
compiling stm32f4xx_dsi.c...
compiling stm32f4xx_cryp_aes.c...
compiling stm32f4xx_cryp.c...
compiling stm32f4xx_cec.c...
compiling stm32f4xx_fmpi2c.c...
compiling stm32f4xx_dma2d.c...
compiling stm32f4xx_dbgmcu.c...
compiling stm32f4xx_cryp.c...
compiling stm32f4xx_dma.c...
compiling stm32f4xx_cec.c...
compiling stm32f4xx_flash_ramfunc.c...
compiling stm32f4xx_cryp_tdes.c...
compiling stm32f4xx_cryp_des.c...
compiling system_stm32f4xx.c...
compiling stm32f4xx_fmpi2c.c...
compiling stm32f4xx_dfsdm.c...
compiling stm32f4xx_dcmi.c...
compiling stm32f4xx_gpio.c...
compiling stm32f4xx_exti.c...
compiling stm32f4xx_crc.c...
compiling stm32f4xx_adc.c...
compiling stm32f4xx_gpio.c...
compiling stm32f4xx_can.c...
compiling stm32f4xx_fsmc.c...
compiling stm32f4xx_flash.c...
compiling stm32f4xx_cryp_aes.c...
compiling stm32f4xx_hash.c...
compiling stm32f4xx_hash_md5.c...
compiling stm32f4xx_hash_sha1.c...
compiling stm32f4xx_lptim.c...
compiling stm32f4xx_iwdg.c...
compiling stm32f4xx_i2c.c...
compiling stm32f4xx_qspi.c...
compiling stm32f4xx_lptim.c...
compiling stm32f4xx_pwr.c...
compiling stm32f4xx_ltdc.c...
compiling stm32f4xx_qspi.c...
compiling stm32f4xx_rng.c...
compiling stm32f4xx_sdio.c...
compiling stm32f4xx_sai.c...
compiling stm32f4xx_rcc.c...
compiling stm32f4xx_spdifrx.c...
compiling AHRS_middleware.c...
compiling stm32f4xx_syscfg.c...
compiling stm32f4xx_spi.c...
compiling stm32f4xx_sai.c...
compiling TIM.c...
compiling stm32f4xx_sdio.c...
compiling stm32f4xx_wwdg.c...
compiling stm32f4xx_usart.c...
compiling stm32f4xx_rtc.c...
compiling Delay.c...
compiling stm32f4xx_tim.c...
compiling stm32f4xx_syscfg.c...
compiling stm32f4xx_spi.c...
compiling user_lib.c...
compiling TIM.c...
compiling stm32f4xx_rtc.c...
compiling UART.c...
compiling stm32f4xx_tim.c...
compiling MyI2C.c...
compiling CAN.c...
compiling WaveFiltering_Kalman_Filtering.c...
Control\WaveFiltering_Kalman_Filtering.c(13): warning: #177-D: variable "pDst" was declared but never referenced
float pDst,pDst1=1.0f;
@@ -85,45 +86,36 @@ Control\WaveFiltering_Kalman_Filtering.c(13): warning: #177-D: variable "pDst1"
Control\WaveFiltering_Kalman_Filtering.c(32): warning: #1-D: last line of file ends without a newline
Control\WaveFiltering_Kalman_Filtering.c: 3 warnings, 0 errors
compiling CAN.c...
compiling LED.c...
compiling Buzzer.c...
compiling Remote.c...
compiling IST8310.c...
compiling Remote.c...
compiling Laser.c...
compiling BMI088.c...
compiling LinkCheck.c...
compiling GM6020.c...
compiling M3508.c...
compiling LinkCheck.c...
compiling M2006.c...
compiling CloseLoopControl.c...
compiling Warming.c...
compiling AttitudeAlgorithms.c...
compiling M3508.c...
compiling CToC.c...
compiling IMUTemperatureControl.c...
compiling Gimbal.c...
compiling CloseLoopControl.c...
compiling AttitudeAlgorithms.c...
compiling PID.c...
compiling RefereeSystem.c...
compiling Visual.c...
CarBody\Visual.c(76): warning: #9-D: nested comment is not allowed
UART2_Printf("%f %f %f %f \n",Visual_Yaw,Visual_Pitch,Visual_GetRoll,Visual_GetDelay);//*0.0030518509475997f*/
CarBody\Visual.c(115): warning: #550-D: variable "Visual_Type" was set but never used
char Visual_Type = '\0'; // 存储类型r/b/u<><75>?
CarBody\Visual.c(118): warning: #550-D: variable "Visual_ReceiveFlag" was set but never used
uint8_t Visual_ReceiveFlag = 0; // 接收完成标志
CarBody\Visual.c(124): warning: #550-D: variable "RxTimeoutTick" was set but never used
static uint32_t RxTimeoutTick = 0;// 超时计时器毫秒<E6AFAB><E7A792>?
CarBody\Visual.c(288): warning: #1-D: last line of file ends without a newline
*/
CarBody\Visual.c(19): warning: #177-D: variable "dataType" was declared but never referenced
static char dataType; // 存储类型字段<E5AD97><E6AEB5>?'r'/'b'/'u'<27><>?
CarBody\Visual.c: 6 warnings, 0 errors
compiling Keyboard.c...
compiling Visual.c...
CarBody\Visual.c(68): warning: #9-D: nested comment is not allowed
UART2_Printf("%f %f %f %f \n",Visual_Yaw,Visual_Pitch,Visual_GetRoll,Visual_GetDelay);//*0.0030518509475997f*/
CarBody\Visual.c(165): warning: #1-D: last line of file ends without a newline
}
CarBody\Visual.c: 2 warnings, 0 errors
compiling IMUTemperatureControl.c...
compiling RefereeSystem.c...
compiling Gimbal.c...
compiling main.c...
compiling stm32f4xx_it.c...
linking...
Program Size: Code=31024 RO-data=1372 RW-data=576 ZI-data=3344
".\Objects\Project.axf" - 0 Error(s), 9 Warning(s).
Program Size: Code=31544 RO-data=1236 RW-data=552 ZI-data=3520
".\Objects\Project.axf" - 0 Error(s), 5 Warning(s).
<h2>Software Packages used:</h2>
@@ -135,7 +127,7 @@ Package Vendor: Keil
<h2>Collection of Component include folders:</h2>
<h2>Collection of Component Files used:</h2>
Build Time Elapsed: 00:00:05
Build Time Elapsed: 00:00:04
</pre>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@@ -1741,7 +1741,7 @@ I (.\Library\stm32f4xx_dcmi.h)(0x64D03164)
I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2)
I (.\Start\core_cmInstr.h)(0x64D03162)
I (.\Start\core_cmFunc.h)(0x64D03162)
I (.\Start\core_cmSimd.h)(0x64D03162)
I (.\Start\core_cmSimd.h)(0x64D03162)
I (.\Start\system_stm32f4xx.h)(0x64D03132)
I (.\User\stm32f4xx_conf.h)(0x64D03180)
I (.\Library\stm32f4xx_adc.h)(0x64D03164)
@@ -1886,7 +1886,7 @@ I (.\Library\stm32f4xx_fsmc.h)(0x64D03164)
I (.\Library\stm32f4xx_rtc.h)(0x64D03164)
I (.\Library\stm32f4xx_sdio.h)(0x64D03164)
I (.\Library\stm32f4xx_spi.h)(0x64D03164)
I (.\Library\stm32f4xx_syscfg.h)(0x64D03164)
I (.\Library\stm32f4xx_syscfg.h)(0x64D03164)
I (.\Library\stm32f4xx_tim.h)(0x64D03164)
I (.\Library\stm32f4xx_usart.h)(0x64D03164)
I (.\Library\stm32f4xx_wwdg.h)(0x64D03164)
@@ -1921,11 +1921,11 @@ I (.\Library\stm32f4xx_can.h)(0x64D03164)
I (.\Library\stm32f4xx_exti.h)(0x64D03164)
I (.\Library\stm32f4xx_flash.h)(0x64D03164)
I (.\Library\stm32f4xx_gpio.h)(0x64D03164)
I (.\Library\stm32f4xx_i2c.h)(0x64D03164)
I (.\Library\stm32f4xx_i2c.h)(0x64D03164)
I (.\Library\stm32f4xx_iwdg.h)(0x64D03164)
I (.\Library\stm32f4xx_pwr.h)(0x64D03164)
I (.\Library\stm32f4xx_rcc.h)(0x64D03164)
I (.\Library\stm32f4xx_rtc.h)(0x64D03164)
I (.\Library\stm32f4xx_rtc.h)(0x64D03164)
I (.\Library\stm32f4xx_sdio.h)(0x64D03164)
I (.\Library\stm32f4xx_spi.h)(0x64D03164)
I (.\Library\stm32f4xx_syscfg.h)(0x64D03164)
@@ -2188,11 +2188,11 @@ I (.\Library\stm32f4xx_dac.h)(0x64D03164)
I (.\Library\stm32f4xx_rcc.h)(0x64D03164)
I (.\Library\stm32f4xx_rtc.h)(0x64D03164)
I (.\Library\stm32f4xx_sdio.h)(0x64D03164)
I (.\Library\stm32f4xx_spi.h)(0x64D03164)
I (.\Library\stm32f4xx_spi.h)(0x64D03164)
I (.\Library\stm32f4xx_syscfg.h)(0x64D03164)
I (.\Library\stm32f4xx_tim.h)(0x64D03164)
I (.\Library\stm32f4xx_usart.h)(0x64D03164)
I (.\Library\stm32f4xx_wwdg.h)(0x64D03164)
I (.\Library\stm32f4xx_wwdg.h)(0x64D03164)
I (.\Library\misc.h)(0x64D03164)
I (.\Library\stm32f4xx_cryp.h)(0x64D03164)
I (.\Library\stm32f4xx_hash.h)(0x64D03164)
@@ -2236,7 +2236,7 @@ I (.\Motor\GM6020.h)(0x669D1130)
I (.\Library\stm32f4xx_syscfg.h)(0x64D03164)
I (.\Library\stm32f4xx_tim.h)(0x64D03164)
I (.\Library\stm32f4xx_usart.h)(0x64D03164)
I (.\Library\stm32f4xx_wwdg.h)(0x64D03164)
I (.\Library\stm32f4xx_wwdg.h)(0x64D03164)
I (.\Library\misc.h)(0x64D03164)
I (.\Library\stm32f4xx_cryp.h)(0x64D03164)
I (.\Library\stm32f4xx_hash.h)(0x64D03164)
@@ -2271,12 +2271,12 @@ I (.\Library\stm32f4xx_can.h)(0x64D03164)
I (.\Library\stm32f4xx_dma.h)(0x64D03164)
I (.\Library\stm32f4xx_exti.h)(0x64D03164)
I (.\Library\stm32f4xx_flash.h)(0x64D03164)
I (.\Library\stm32f4xx_gpio.h)(0x64D03164)
I (.\Library\stm32f4xx_gpio.h)(0x64D03164)
I (.\Library\stm32f4xx_i2c.h)(0x64D03164)
I (.\Library\stm32f4xx_iwdg.h)(0x64D03164)
I (.\Library\stm32f4xx_iwdg.h)(0x64D03164)
I (.\Library\stm32f4xx_pwr.h)(0x64D03164)
I (.\Library\stm32f4xx_rcc.h)(0x64D03164)
I (.\Library\stm32f4xx_rtc.h)(0x64D03164)
I (.\Library\stm32f4xx_rtc.h)(0x64D03164)
I (.\Library\stm32f4xx_sdio.h)(0x64D03164)
I (.\Library\stm32f4xx_spi.h)(0x64D03164)
I (.\Library\stm32f4xx_syscfg.h)(0x64D03164)
@@ -2311,7 +2311,7 @@ I (.\Library\stm32f4xx_can.h)(0x64D03164)
I (.\User\stm32f4xx_conf.h)(0x64D03180)
I (.\Library\stm32f4xx_adc.h)(0x64D03164)
I (.\Library\stm32f4xx_crc.h)(0x64D03164)
I (.\Library\stm32f4xx_dbgmcu.h)(0x64D03164)
I (.\Library\stm32f4xx_dbgmcu.h)(0x64D03164)
I (.\Library\stm32f4xx_dma.h)(0x64D03164)
I (.\Library\stm32f4xx_exti.h)(0x64D03164)
I (.\Library\stm32f4xx_flash.h)(0x64D03164)
@@ -2397,7 +2397,7 @@ I (.\Library\stm32f4xx_dac.h)(0x64D03164)
I (.\Start\system_stm32f4xx.h)(0x64D03132)
I (.\User\stm32f4xx_conf.h)(0x64D03180)
I (.\Library\stm32f4xx_adc.h)(0x64D03164)
I (.\Library\stm32f4xx_crc.h)(0x64D03164)
I (.\Library\stm32f4xx_crc.h)(0x64D03164)
I (.\Library\stm32f4xx_dbgmcu.h)(0x64D03164)
I (.\Library\stm32f4xx_dma.h)(0x64D03164)
I (.\Library\stm32f4xx_exti.h)(0x64D03164)
@@ -2435,14 +2435,14 @@ I (.\Library\stm32f4xx_can.h)(0x64D03164)
I (.\Start\stm32f4xx.h)(0x66256792)
I (.\Start\core_cm4.h)(0x64D03162)
I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2)
I (.\Start\core_cmInstr.h)(0x64D03162)
I (.\Start\core_cmFunc.h)(0x64D03162)
I (.\Start\core_cmInstr.h)(0x64D03162)
I (.\Start\core_cmFunc.h)(0x64D03162)
I (.\Start\core_cmSimd.h)(0x64D03162)
I (.\Start\system_stm32f4xx.h)(0x64D03132)
I (.\User\stm32f4xx_conf.h)(0x64D03180)
I (.\Library\stm32f4xx_adc.h)(0x64D03164)
I (.\Library\stm32f4xx_crc.h)(0x64D03164)
I (.\Library\stm32f4xx_dbgmcu.h)(0x64D03164)
I (.\Library\stm32f4xx_dbgmcu.h)(0x64D03164)
I (.\Library\stm32f4xx_dma.h)(0x64D03164)
I (.\Library\stm32f4xx_exti.h)(0x64D03164)
I (.\Library\stm32f4xx_flash.h)(0x64D03164)
@@ -2477,9 +2477,9 @@ I (.\Library\stm32f4xx_can.h)(0x64D03164)
-o .\objects\m2006.o --omf_browse .\objects\m2006.crf --depend .\objects\m2006.d)
I (.\Start\stm32f4xx.h)(0x66256792)
I (.\Start\core_cm4.h)(0x64D03162)
I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2)
I (.\Start\core_cmInstr.h)(0x64D03162)
I (.\Start\core_cm4.h)(0x64D03162)
I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2)
I (.\Start\core_cmInstr.h)(0x64D03162)
I (.\Start\core_cmFunc.h)(0x64D03162)
I (.\Start\core_cmSimd.h)(0x64D03162)
I (.\Start\system_stm32f4xx.h)(0x64D03132)
@@ -2528,10 +2528,10 @@ I (.\Library\stm32f4xx_fsmc.h)(0x64D03164)
I (.\Start\system_stm32f4xx.h)(0x64D03132)
I (.\User\stm32f4xx_conf.h)(0x64D03180)
I (.\Library\stm32f4xx_adc.h)(0x64D03164)
I (.\Library\stm32f4xx_crc.h)(0x64D03164)
I (.\Library\stm32f4xx_crc.h)(0x64D03164)
I (.\Library\stm32f4xx_dbgmcu.h)(0x64D03164)
I (.\Library\stm32f4xx_dma.h)(0x64D03164)
I (.\Library\stm32f4xx_exti.h)(0x64D03164)
I (.\Library\stm32f4xx_exti.h)(0x64D03164)
I (.\Library\stm32f4xx_flash.h)(0x64D03164)
I (.\Library\stm32f4xx_gpio.h)(0x64D03164)
I (.\Library\stm32f4xx_i2c.h)(0x64D03164)
@@ -2573,9 +2573,6 @@ I (.\Function\AttitudeAlgorithms.h)(0x660A3E88)
I (.\Start\core_cmSimd.h)(0x64D03162)
I (.\Start\system_stm32f4xx.h)(0x64D03132)
I (.\User\stm32f4xx_conf.h)(0x64D03180)
I (.\Library\stm32f4xx_adc.h)(0x64D03164)
I (.\Library\stm32f4xx_crc.h)(0x64D03164)
I (.\Library\stm32f4xx_dbgmcu.h)(0x64D03164)
I (.\Library\stm32f4xx_adc.h)(0x64D03164)
I (.\Library\stm32f4xx_crc.h)(0x64D03164)
I (.\Library\stm32f4xx_dbgmcu.h)(0x64D03164)
@@ -2613,9 +2610,9 @@ I (.\Library\stm32f4xx_dac.h)(0x64D03164)
F (.\Function\Warming.h)(0x66A19ADE)()
F (.\Function\CToC.c)(0x669D344E)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186
-IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include
I (.\Start\stm32f4xx.h)(0x66256792)
-D__UVISION_VERSION="543" -DSTM32F407xx -DUSE_STDPERIPH_DRIVER -DSTM32F40_41xxx -DARM_MATH_CM4 -D__FPU_PRESENT="1U"
-o .\objects\ctoc.o --omf_browse .\objects\ctoc.crf --depend .\objects\ctoc.d)
I (.\Start\stm32f4xx.h)(0x66256792)
@@ -2656,7 +2653,7 @@ I (.\System\Delay.h)(0x64FBE4AA)
I (Function\CToC.h)(0x669D31F6)
I (.\User\Parameter.h)(0x67E27657)
I (.\CarBody\RefereeSystem.h)(0x66A1C17E)
-IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include
F (.\Function\CToC.h)(0x669D31F6)()
F (.\Function\CloseLoopControl.c)(0x67B83013)(--c99 -c --cpu Cortex-M4.fp.sp -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\Start -I .\Library -I .\System -I .\Algorithm -I .\AHRS -I .\Hardware -I .\Motor -I .\Function -I .\Control -I .\CarBody -I .\User --diag_suppress=188 --no-multibyte-chars --diag_suppress=186
-IC:\Users\LSMushui\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\3.1.1\Drivers\CMSIS\Device\ST\STM32F4xx\Include
@@ -2666,20 +2663,20 @@ I (.\Motor\M2006.h)(0x669D1190)
-o .\objects\closeloopcontrol.o --omf_browse .\objects\closeloopcontrol.crf --depend .\objects\closeloopcontrol.d)
I (.\Start\stm32f4xx.h)(0x66256792)
I (.\Start\core_cm4.h)(0x64D03162)
I (.\Start\core_cmSimd.h)(0x64D03162)
I (C:\Users\LSMushui\AppData\Local\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5E8E3CC2)
I (.\Start\core_cmInstr.h)(0x64D03162)
I (.\Start\core_cmFunc.h)(0x64D03162)
I (.\Start\core_cmSimd.h)(0x64D03162)
I (.\Start\system_stm32f4xx.h)(0x64D03132)
I (.\User\stm32f4xx_conf.h)(0x64D03180)
I (.\Library\stm32f4xx_adc.h)(0x64D03164)
I (.\Library\stm32f4xx_exti.h)(0x64D03164)
I (.\Library\stm32f4xx_crc.h)(0x64D03164)
I (.\Library\stm32f4xx_dbgmcu.h)(0x64D03164)
I (.\Library\stm32f4xx_dma.h)(0x64D03164)
I (.\Library\stm32f4xx_exti.h)(0x64D03164)
I (.\Library\stm32f4xx_flash.h)(0x64D03164)
I (.\Library\stm32f4xx_gpio.h)(0x64D03164)
I (.\Library\stm32f4xx_rcc.h)(0x64D03164)
I (.\Library\stm32f4xx_i2c.h)(0x64D03164)
I (.\Library\stm32f4xx_iwdg.h)(0x64D03164)
I (.\Library\stm32f4xx_pwr.h)(0x64D03164)
I (.\Library\stm32f4xx_rcc.h)(0x64D03164)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -120,7 +120,7 @@
<SetRegEntry>
<Number>0</Number>
<Key>CMSIS_AGDI</Key>
<Name>-X"WCH CMSIS-DAP" -UF3EE87FE11CC -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"CMSIS-DAP_LU" -ULU_2022_8888 -O206 -S8 -C0 -P00 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -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>
@@ -2098,7 +2098,7 @@
<Group>
<GroupName>CarBody</GroupName>
<tvExp>1</tvExp>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
@@ -2214,7 +2214,7 @@
<Group>
<GroupName>User</GroupName>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>

View File

@@ -9,10 +9,10 @@
#include "CToC.h"
#include "RefereeSystem.h"
uint8_t CAN_CAN1DeviceNumber=4;//CAN1总线上设备数量
uint8_t CAN_CAN1DeviceNumber=6;//CAN1总线上设备数量
uint8_t CAN_CAN2DeviceNumber=2;//CAN2总线上设备数量
uint8_t CAN_DeviceNumber=6;//CAN总线上设备数量
uint32_t CAN_CAN1IDList[10][2]={{CAN_GM6020,GM6020_2},{CAN_M2006,M2006_7},{CAN_M3508,M3508_1},{CAN_M3508,M3508_2},0};//CAN1总线上设备ID列表
uint8_t CAN_DeviceNumber=8;//CAN总线上设备数量
uint32_t CAN_CAN1IDList[10][2]={{CAN_GM6020,GM6020_2},{CAN_M3508,M3508_1},{CAN_M3508,M3508_2},{CAN_M3508,M3508_3},{CAN_M3508,M3508_4},{CAN_M3508,M3508_7},0};//CAN1总线上设备ID列表
uint32_t CAN_CAN2IDList[10][2]={{CAN_GM6020,GM6020_1},{CAN_RoboMasterC,CToC_MasterID1},0};//CAN2总线上设备ID列表
int8_t CAN_IDSelect=0;//CAN总线上ID列表选择位
@@ -222,7 +222,7 @@ void CAN1_RX0_IRQHandler(void)
{
RefereeSystem_ShooterOpenCounter=0;
RefereeSystem_ShooterOpenFlag=0;//发射机构离开上电期间
CAN_CAN1DeviceNumber=4;//添加CAN设备
CAN_CAN1DeviceNumber=5;//添加CAN设备
CAN_DeviceNumber=6;
}
}

View File

@@ -2,19 +2,19 @@
#define __PARAMETER_H
/*=============================================结构参数=============================================*/
#define Yaw_GM6020PositionValue 4000//Yaw轴编码器值4050
#define Yaw_GM6020PositionValue 1000//Yaw轴编码器值4050
#define Pitch_GM6020PositionValue 3245//Pitch轴编码器值
#define Pitch_GM6020PositionLowerLinit 3500//Pitch轴编码器值下限
#define Pitch_GM6020PositionUpperLinit 2700//Pitch轴编码器值上限
#define Pitch_GM6020AngleLowerLinit 15.0f//Pitch轴编码器值下限
#define Pitch_GM6020AngleUpperLinit -10.0f//Pitch轴编码器值上限
#define Pitch_GM6020PositionLowerLinit 7363//Pitch轴编码器值下限7363
#define Pitch_GM6020PositionUpperLinit 8625//Pitch轴编码器值上限433 8625
#define Pitch_GM6020AngleLowerLinit 5.0f//Pitch轴编码器值下限
#define Pitch_GM6020AngleUpperLinit -20.0f//Pitch轴编码器值上限
/*=============================================云台参数=============================================*/
#define Gimbal_FrictionWheelSpeed 5500//摩擦轮转速,弹速限制30m/s
#define Gimbal_RammerSpeed -5400//拨弹盘转速,射频为7时大概冷却和热量相抵,5400是射频20的最低下限
#define Gimbal_FrictionWheelSpeed -10000//摩擦轮转速,弹速限制30m/s
#define Gimbal_RammerSpeed -50//拨弹盘转速,射频为7时大概冷却和热量相抵,5400是射频20的最低下限
#define Gimbal_LeverSpeedMapRate 2.0f//云台俯仰拨杆速度映射比例
#define Gimbal_YawPitchSpeedRate 3.0f//云台偏航俯仰速度比
#define Gimbal_LeverSpeedMapRate 1.0f//云台俯仰拨杆速度映射比例
#define Gimbal_YawPitchSpeedRate 2.0f//云台偏航俯仰速度比
/*=============================================操作手参数=============================================*/
#define PC_Go (Remote_RxData.Remote_Key_W)//前

View File

@@ -7,7 +7,7 @@
#include "visual.h"
#include "UART.h"
#define DELAY_TIME 5 //D1定时的计数值
#define DELAY_TIME 100 //D1定时的计数值
unsigned int Delay_Count; //D1的延时初始值
@@ -19,6 +19,7 @@ int main(void)
LED_BON();//蓝灯点亮表示代码在运行
AttitudeAlgorithms_Init();//姿态解算初始化
Delay_s(1);//延时,等待校准和模块启动
//CAN_CANInit();//CAN通讯初始化
LinkCheck_Init();//连接检测初始化
RefereeSystem_Init();//图传链路初始化
Visual_Init();//视觉初始化
@@ -54,7 +55,7 @@ int main(void)
{
Delay_Flag = 0; //定时到标志位清零
//Debug();
Visual_SendData();
//Visual_SendData();
Visual_Trans();//视觉数据传输
Delay_Count = DELAY_TIME; //计数值重装,为下一次非阻塞延时做准备
}
@@ -62,7 +63,7 @@ int main(void)
Delay_us(1500);//CToC周期1.5ms
Delay_us(1000);//CToC周期1.5ms
}
}