diff --git a/MDK-ARM/.vscode/uv4.log b/MDK-ARM/.vscode/uv4.log index 7d1a725..e74d27e 100644 --- a/MDK-ARM/.vscode/uv4.log +++ b/MDK-ARM/.vscode/uv4.log @@ -1,8 +1,8 @@ *** Using Compiler 'V5.06 update 7 (build 960)', folder: 'D:\keil\ARM\ARMCC\Bin' Build target 'R1' -compiling calc_lib.c... +compiling shoot.cpp... linking... -Program Size: Code=30644 RO-data=1884 RW-data=5816 ZI-data=33280 +Program Size: Code=30460 RO-data=1840 RW-data=268 ZI-data=33276 FromELF: creating hex file... "R1\R1.axf" - 0 Error(s), 0 Warning(s). -Build Time Elapsed: 00:00:03 +Build Time Elapsed: 00:00:05 diff --git a/MDK-ARM/.vscode/uv4.log.lock b/MDK-ARM/.vscode/uv4.log.lock index 3525872..aee0bb4 100644 --- a/MDK-ARM/.vscode/uv4.log.lock +++ b/MDK-ARM/.vscode/uv4.log.lock @@ -1 +1 @@ -2025/6/14 22:01:44 \ No newline at end of file +2025/6/15 22:57:56 \ No newline at end of file diff --git a/MDK-ARM/R1.uvoptx b/MDK-ARM/R1.uvoptx index e4aa1d1..11f2aa9 100644 --- a/MDK-ARM/R1.uvoptx +++ b/MDK-ARM/R1.uvoptx @@ -153,24 +153,7 @@ -U-O142 -O2254 -SF10000 -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 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM) - - - 0 - 0 - 82 - 1 -
0
- 0 - 0 - 0 - 0 - 0 - 0 - ../Core/Src/main.c - - -
-
+ 0 @@ -212,6 +195,11 @@ 1 task_struct,0x0A + + 8 + 1 + aaa,0x0A + 0 diff --git a/User/module/ball.cpp b/User/module/ball.cpp index b55f97d..871d3de 100644 --- a/User/module/ball.cpp +++ b/User/module/ball.cpp @@ -116,15 +116,51 @@ void Ball::ballDown(void) HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_SET);//确保闭合气缸 speed_set=500; + if(ball_state==0) + { + osThreadFlagsSet(task_struct.thread.shoot, BALL_OK); + } +} + + + +// E键 sw[1] 👆 200 shoot 中 1000 stop sw[2]👇1800 +// G键 sw[6]👆 1800 中 1000 👇200 +// sw[5] 👆 200 👇1800 +//左旋 sw[7] 200 --1800 +void Ball::rc_mode() +{ + if(rc_ctrl.sw[6]==1800) + { + rc_key=UP2; + } + if(rc_ctrl.sw[6]==1000) + { + rc_key=MIDDLE2; + } + if(rc_ctrl.sw[6]==200) + { + rc_key=DOWN2; + } + + if(rc_ctrl.sw[5]==200) + { + extern_key=IN; + } + if(rc_ctrl.sw[5]==1800) + { + extern_key=OUT; + } + } void Ball::Move_Extend(void) { - if(rc_ctrl.sw[6] == 200) // 左拨杆上 + if(extern_key==IN) { Extend_mcontrol(I_ANGLE1, I_ANGLE2); // 内伸 } - else if(rc_ctrl.sw[6] == 1800) // 左拨杆下 + else if(extern_key==OUT) { Extend_mcontrol(O_ANGLE1, O_ANGLE2); // 外伸 } @@ -134,35 +170,6 @@ void Ball::Move_Extend(void) } } -// C键 sw[5]👆 200 中1000 👇1800 -// D键 sw[6]👆 200 👇1800 -void Ball::rc_mode() -{ - if(rc_ctrl.sw[5]==200) - { - rc_key=UP2; - } - if(rc_ctrl.sw[5]==1000) - { - rc_key=MIDDLE2; - } - if(rc_ctrl.sw[5]==1800) - { - rc_key=DOWN2; - } - - if(rc_ctrl.sw[6]==200) - { - extern_key=IN; - } - if(rc_ctrl.sw[6]==1800) - { - extern_key=OUT; - } - -} - - void Ball::ball_control() { ball_state = HAL_GPIO_ReadPin(up_ball_GPIO_Port, up_ball_Pin); // 有球 1 无球 0 @@ -247,7 +254,7 @@ void Ball::Three_Handing() case BALL_FINISH: key = 0; // 重置按键状态 speed_set = 0; - osThreadFlagsSet(task_struct.thread.shoot, BALL_OK); + //currentState1 = BALL_IDLE; // 直接回到空闲状态 break; default: diff --git a/User/module/shoot.cpp b/User/module/shoot.cpp index 9d52357..ff5a3d5 100644 --- a/User/module/shoot.cpp +++ b/User/module/shoot.cpp @@ -115,7 +115,10 @@ int Shoot::GO_SendData(float pos,float limit) return 0; } -//E键 sw[1]👆 200 shoot 中 1000 stop 👇1800 error + +// E键 sw[1] 👆 200 shoot 中 1000 stop sw[2]👇1800 +// G键 sw[6]👆 1800 中 1000 👇200 +//左旋 sw[7] 200 --1800 void Shoot::rc_mode() { if(rc_ctrl.sw[1]==200) @@ -126,25 +129,25 @@ void Shoot::rc_mode() { rc_key=MIDDLE1; } - if(rc_ctrl.sw[1]==1800) + if(rc_ctrl.sw[2]==1800) { rc_key=DOWN1; } - if(rc_ctrl.sw[7]==200) - { - trigger_key=WAIT; - } - if(rc_ctrl.sw[7]==1800) - { - trigger_key=SHOOT; - } + // if(rc_ctrl.sw[7]==200) + // { + // trigger_key=WAIT; + // } + // if(rc_ctrl.sw[7]==1800) + // { + // trigger_key=SHOOT; + // } //knob_increment=rc_ctrl.ch[2]/150; //旋钮增量 static int last_knob_value = 0; // 记录旋钮的上一次值 - int current_knob_value = rc_ctrl.sw[4]; // 获取当前旋钮值 + int current_knob_value = rc_ctrl.sw[7]; // 获取当前旋钮值 // 计算旋钮增量 if (current_knob_value >= 200 && current_knob_value <= 1800) { @@ -156,7 +159,6 @@ void Shoot::rc_mode() } - void Shoot::shoot_control() { //方便调试 @@ -164,7 +166,7 @@ void Shoot::shoot_control() { feedback.fd_tpos = trigger_Motor->total_angle; switch (rc_key) { - case DOWN1: + case DOWN1: control_pos = INIT_POS; // 默认中间挡位位置 //fire_pos = control_pos + knob_increment; // 根据旋钮值调整发射位置 @@ -234,7 +236,7 @@ void Shoot :: shoot_Current() go1.Pos = fire_pos; // 下拉到中间挡位位置 if (feedback.fd_gopos >= fire_pos - GO_ERROR && feedback.fd_gopos <= fire_pos + GO_ERROR) { BSP_Buzzer_Start(); - // BSP_Buzzer_Set(1,5000); + BSP_Buzzer_Set(1,5000); // see_you_again(); //currentState = SHOOT_WAIT; // 等待发射信号 //在拨杆切换时触发了 diff --git a/User/task/ballTask.cpp b/User/task/ballTask.cpp index e1609af..a60d706 100644 --- a/User/task/ballTask.cpp +++ b/User/task/ballTask.cpp @@ -10,15 +10,6 @@ extern RC_ctrl_t rc_ctrl; Ball ball; //float vofa[8]; - -// C键 sw[5]👆 1800 中1000 👇200 -// D键 sw[6]👆 200 外伸 👇1800 归位 //三摩擦架子 -// H键 sw[7]👆 200 👇1800 //取球 - -int angle1=330; -int angle2=-240; -int test111=0; - //检查光电 int abc=0; @@ -37,7 +28,7 @@ void FunctionBall(void *argument) task_struct.stack_water_mark.ball = osThreadGetStackSpace(osThreadGetId()); #endif - abc=HAL_GPIO_ReadPin(up_ball_GPIO_Port, up_ball_Pin); + abc=HAL_GPIO_ReadPin(up_ball_GPIO_Port, up_ball_Pin); ball.rc_mode(); // 遥控器模式 diff --git a/User/task/shootTask.cpp b/User/task/shootTask.cpp index dd96ebf..771cdf0 100644 --- a/User/task/shootTask.cpp +++ b/User/task/shootTask.cpp @@ -10,15 +10,8 @@ extern RC_ctrl_t rc_ctrl; Shoot shoot; NUC_t nucData; // 自瞄 -int shoot_flag = 0; - -int a2; - int goangle=0; -//E键 sw[0]👆 200 中 1000 👇1800 -//F键 sw[1]👆 1800 👇200 - void FunctionShoot(void *argument) { (void)argument; /* 未使用argument,消除警告 */ @@ -39,19 +32,17 @@ while(1) if(shoot.flag_thread & BALL_OK) { - a2=2; + } - - shoot_flag=HAL_GPIO_ReadPin(STOP_GPIO_Port, STOP_Pin); - if (osMessageQueueGet(task_struct.msgq.nuc, &nucData, NULL, 0) == osOK) { shoot.distanceGet(nucData); } - //shoot.GO_SendData(goangle,5); shoot.shoot_control(); +// shoot.GO_SendData(goangle,5); +// shoot.shoot_control(); // shoot.t_posSet=goangle; // shoot.trigger_control();