diff --git a/AUTO_CHASSIS.ioc b/AUTO_CHASSIS.ioc
index f608f02..c075c1e 100644
--- a/AUTO_CHASSIS.ioc
+++ b/AUTO_CHASSIS.ioc
@@ -145,23 +145,24 @@ Mcu.Pin24=PA4
Mcu.Pin25=PC4
Mcu.Pin26=PC5
Mcu.Pin27=PE9
-Mcu.Pin28=PA7
-Mcu.Pin29=PB0
+Mcu.Pin28=PE11
+Mcu.Pin29=PA7
Mcu.Pin3=PB3
-Mcu.Pin30=VP_CRC_VS_CRC
-Mcu.Pin31=VP_FREERTOS_VS_CMSIS_V2
-Mcu.Pin32=VP_SYS_VS_Systick
-Mcu.Pin33=VP_TIM4_VS_ClockSourceINT
-Mcu.Pin34=VP_TIM7_VS_ClockSourceINT
-Mcu.Pin35=VP_TIM10_VS_ClockSourceINT
-Mcu.Pin36=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS
+Mcu.Pin30=PB0
+Mcu.Pin31=VP_CRC_VS_CRC
+Mcu.Pin32=VP_FREERTOS_VS_CMSIS_V2
+Mcu.Pin33=VP_SYS_VS_Systick
+Mcu.Pin34=VP_TIM4_VS_ClockSourceINT
+Mcu.Pin35=VP_TIM7_VS_ClockSourceINT
+Mcu.Pin36=VP_TIM10_VS_ClockSourceINT
+Mcu.Pin37=VP_USB_DEVICE_VS_USB_DEVICE_CDC_FS
Mcu.Pin4=PA14
Mcu.Pin5=PA13
Mcu.Pin6=PB7
Mcu.Pin7=PB6
Mcu.Pin8=PD0
Mcu.Pin9=PC11
-Mcu.PinsNb=37
+Mcu.PinsNb=38
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F407IGHx
@@ -272,9 +273,14 @@ PD14.GPIOParameters=GPIO_Label
PD14.GPIO_Label=Buzzer
PD14.Locked=true
PD14.Signal=S_TIM4_CH3
+PE11.GPIOParameters=PinState,GPIO_PuPd
+PE11.GPIO_PuPd=GPIO_PULLDOWN
+PE11.Locked=true
+PE11.PinState=GPIO_PIN_SET
+PE11.Signal=GPIO_Output
PE9.GPIOParameters=PinState,GPIO_PuPd,GPIO_Label
PE9.GPIO_Label=FlagForUpper
-PE9.GPIO_PuPd=GPIO_PULLUP
+PE9.GPIO_PuPd=GPIO_PULLDOWN
PE9.Locked=true
PE9.PinState=GPIO_PIN_SET
PE9.Signal=GPIO_Output
diff --git a/Core/Inc/stm32f4xx_hal_conf.h b/Core/Inc/stm32f4xx_hal_conf.h
index cf0bc67..8495479 100644
--- a/Core/Inc/stm32f4xx_hal_conf.h
+++ b/Core/Inc/stm32f4xx_hal_conf.h
@@ -190,7 +190,7 @@
#define USE_HAL_SMBUS_REGISTER_CALLBACKS 0U /* SMBUS register callback disabled */
#define USE_HAL_SPI_REGISTER_CALLBACKS 0U /* SPI register callback disabled */
#define USE_HAL_TIM_REGISTER_CALLBACKS 0U /* TIM register callback disabled */
-#define USE_HAL_UART_REGISTER_CALLBACKS 1U /* UART register callback disabled */
+#define USE_HAL_UART_REGISTER_CALLBACKS 0U /* UART register callback disabled */
#define USE_HAL_USART_REGISTER_CALLBACKS 0U /* USART register callback disabled */
#define USE_HAL_WWDG_REGISTER_CALLBACKS 0U /* WWDG register callback disabled */
diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c
index 7b59a61..01da5bd 100644
--- a/Core/Src/gpio.c
+++ b/Core/Src/gpio.c
@@ -61,7 +61,7 @@ void MX_GPIO_Init(void)
HAL_GPIO_WritePin(ACCL_CS_GPIO_Port, ACCL_CS_Pin, GPIO_PIN_SET);
/*Configure GPIO pin Output Level */
- HAL_GPIO_WritePin(FlagForUpper_GPIO_Port, FlagForUpper_Pin, GPIO_PIN_SET);
+ HAL_GPIO_WritePin(GPIOE, FlagForUpper_Pin|GPIO_PIN_11, GPIO_PIN_SET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GYRO_CS_GPIO_Port, GYRO_CS_Pin, GPIO_PIN_SET);
@@ -92,12 +92,12 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
- /*Configure GPIO pin : PtPin */
- GPIO_InitStruct.Pin = FlagForUpper_Pin;
+ /*Configure GPIO pins : PEPin PE11 */
+ GPIO_InitStruct.Pin = FlagForUpper_Pin|GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_PULLUP;
+ GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
- HAL_GPIO_Init(FlagForUpper_GPIO_Port, &GPIO_InitStruct);
+ HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = GYRO_CS_Pin;
diff --git a/Core/Src/main.c b/Core/Src/main.c
index 39a953b..f48044b 100644
--- a/Core/Src/main.c
+++ b/Core/Src/main.c
@@ -79,7 +79,8 @@ int main(void)
/* MCU Configuration--------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. * HAL_Init();
+ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
+ HAL_Init();
/* USER CODE BEGIN Init */
@@ -94,7 +95,6 @@ int main(void)
/* Initialize all configured peripherals */
MX_GPIO_Init();
-
MX_DMA_Init();
MX_SPI1_Init();
MX_TIM4_Init();
diff --git a/MDK-ARM/AUTO_CHASSIS.uvoptx b/MDK-ARM/AUTO_CHASSIS.uvoptx
index 5fb0e6c..10be61d 100644
--- a/MDK-ARM/AUTO_CHASSIS.uvoptx
+++ b/MDK-ARM/AUTO_CHASSIS.uvoptx
@@ -235,6 +235,11 @@
1
flaggg,0x0A
+
+ 16
+ 1
+ ddd
+
diff --git a/User/Module/config.c b/User/Module/config.c
index cf74443..0cdd49c 100644
--- a/User/Module/config.c
+++ b/User/Module/config.c
@@ -46,6 +46,21 @@ static const ConfigParam_t param_chassis ={
.i_limit = 2000.0f,
.out_limit = 3000.0f,
},
+.M3508_angle_param = {
+ .p = 10.0f,
+ .i = 0.0f,
+ .d = 1.5f,
+ .i_limit = 1000.0f,
+ .out_limit = 3000.0f,
+},
+.M3508_speed_param={
+ .p = 5.1f,
+ .i = 0.02f,
+ .d = 3.2f,
+ .i_limit = 200.0f,
+ .out_limit =6000.0f,
+},
+
.UP_GM6020_angle_param={
.p = 30.0f,
.i = 20.0f,
@@ -60,13 +75,7 @@ static const ConfigParam_t param_chassis ={
.i_limit = 200.0f,
.out_limit = 3000.0f
},
-.M3508_speed_param={
- .p = 15.1f,
- .i = 0.02f,
- .d = 3.2f,
- .i_limit = 200.0f,
- .out_limit =6000.0f,
-},
+
.go_param={
.rev = 0,
.T=0.1,
diff --git a/User/Module/up.c b/User/Module/up.c
index 174531b..d019eeb 100644
--- a/User/Module/up.c
+++ b/User/Module/up.c
@@ -11,11 +11,25 @@
#define MOTOR2006_ECD_TO_ANGLE (360.0 / 8191.0 / (GEAR_RATIO_2006)) //2006编码值转轴角度
#define MOTOR3508_ECD_TO_ANGLE (360.0 / 8191.0 / (GEAR_RATIO_3508)) //3508编码值转轴角度
+/*投球*/
+#define M2006_INIT_ANGLE (-120) //初始和发射
+#define GO1_INIT_POSITION (0) //go初始
+
+#define M2006_TRIGGER (0) //扳机
+#define GO_POSITION_TRIGGER (-300) //go发射控制值
+#define GO_POSITION_PITCH_FD (-4.8f) //反馈检测
+/*运球*/
-
-
+#define M3508_INIT_ANGLE (0) //3508
+#define M3508_HIGH_ANGLE (1000) //3508,升起角度
+#define GO2_Flip_timing (200) // go的翻转时机,以3508角度反馈值为准
+#define GO2_Flip_ANGLE (150) //go2翻转角度
+#define BALL_REL_TIME (1.76) //球放开时机,以go的反馈值为准
+// 定义继电器控制
+#define RELAY1_TOGGLE(state) HAL_GPIO_WritePin(GPIOE, GPIO_PIN_9, (state) ? GPIO_PIN_SET : GPIO_PIN_RESET)
+#define RELAY2_TOGGLE(state) HAL_GPIO_WritePin(GPIOE, GPIO_PIN_11, (state) ? GPIO_PIN_SET : GPIO_PIN_RESET)
int8_t up_init(UP_t *u,const UP_Param_t *param,float target_freq)
{
@@ -40,6 +54,10 @@ int8_t up_init(UP_t *u,const UP_Param_t *param,float target_freq)
GO_M8010_send_data(BSP_UART_GetHandle(BSP_UART_RS485), i,u->param->go_param .rev ,u->param->go_param .T ,u->param->go_param .W ,0,u->param->go_param .K_P ,u->param->go_param .K_W );
}
+
+ RELAY1_TOGGLE (0);
+ RELAY2_TOGGLE (0);
+
/**/
u->state .Dribble_flag =Not_started_dri;
@@ -250,7 +268,6 @@ int8_t UP_control(UP_t *u,CAN_Output_t *out,CMD_t *c)
{
if(u ==NULL) return 0;
- if(u ==NULL) return 0;
switch (c->CMD_CtrlType )
{
@@ -265,7 +282,7 @@ int8_t UP_control(UP_t *u,CAN_Output_t *out,CMD_t *c)
u->state .last_state = Not_started_Pit;
u->motor_target .go_shoot =0;
- u->motor_target .M2006_angle =-140;
+ u->motor_target .M2006_angle =M2006_INIT_ANGLE;
break;
@@ -273,17 +290,23 @@ int8_t UP_control(UP_t *u,CAN_Output_t *out,CMD_t *c)
if(u->state .last_state == Not_started_Pit)
{
+<<<<<<< Updated upstream
u->motor_target .go_shoot =-2050;
u->motor_target .M2006_angle =-140;
if(u->motorfeedback .GO_motor_info[0]->Pos < (-35.20)) //到达位置后再扣扳机
+=======
+ u->motor_target .go_shoot =GO_POSITION_TRIGGER;
+
+ if(u->motorfeedback .GO_motor_info[0]->Pos < (GO_POSITION_PITCH_FD)) //到达位置后再扣扳机
+>>>>>>> Stashed changes
{
- u->motor_target .M2006_angle =0;
+ u->motor_target .M2006_angle =M2006_INIT_ANGLE;
if(u->motorfeedback .M2006.total_angle>-5)
{//避免没勾上就拉
- u->motor_target .go_shoot =0;
+ u->motor_target .go_shoot =GO1_INIT_POSITION;
u->state .Pitch_flag = Launch_Ready ;
- u->state .last_state = Launch_Ready;
+ u->state .last_state = Launch_Ready;
}
@@ -295,32 +318,59 @@ int8_t UP_control(UP_t *u,CAN_Output_t *out,CMD_t *c)
if (u->state .last_state == Launch_Ready)
{
- u->motor_target .M2006_angle =-140;
+ u->motor_target .M2006_angle =M2006_INIT_ANGLE;
u->state .Pitch_flag = Done_Pit ;
u->state .last_state = Done_Pit;
}
- {
- }
break;
-
-
+
+
+
+
+
+
+
+
+
+ case Dribble:
+ {
+// u->motor_target.M3508_angle = M3508_HIGH_ANGLE;
+// if(u->motorfeedback .M3508 .total_angle >GO2_Flip_timing){
+// u->motor_target .go_spin = GO2_Flip_ANGLE ;
+//
+// if(u->motorfeedback .GO_motor_info[2]->Pos > BALL_REL_TIME )
+// {
+// RELAY1_TOGGLE (0);
+// RELAY2_TOGGLE (1);
+//
+//
+// }
+//
+// }
+//
+// RELAY1_TOGGLE (0);
+// RELAY2_TOGGLE (0);
+
+
+ }
+ break ;
+
+
+
+
+
+
+
+
+
+
+
}
break;
-
- case MID_NAVI :
- {
- }
- break ;
-
- case PICK_t :
- {
- }
-
-
- break;
+
default:
break;
@@ -333,6 +383,39 @@ int8_t UP_control(UP_t *u,CAN_Output_t *out,CMD_t *c)
}
-
+int8_t Dribble_Process(UP_t *u,CAN_Output_t *out,CMD_t *c)
+{
+
+ if(u ==NULL) return 0;
+
+ switch (c->CMD_UP_mode)
+
+ case Dribble:
+ {
+ RELAY1_TOGGLE (1);
+ RELAY2_TOGGLE (0);
+ u->motor_target.M3508_angle = M3508_HIGH_ANGLE;
+ if(u->motorfeedback .M3508 .total_angle >GO2_Flip_timing){
+ u->motor_target .go_spin = GO2_Flip_ANGLE ;
+
+ if((u->motorfeedback .GO_motor_info[2]->Pos) > BALL_REL_TIME )
+ {
+ RELAY1_TOGGLE (0);
+ osDelay (10);
+ RELAY2_TOGGLE (1);
+
+
+ }
+
+ }
+
+
+ }
+
+
+
+
+
+}
diff --git a/User/device/cmd.c b/User/device/cmd.c
index 3e0fbad..07c6b86 100644
--- a/User/device/cmd.c
+++ b/User/device/cmd.c
@@ -61,9 +61,16 @@ int8_t CMD_ParseRC(CMD_t *cmd,const CMD_RC_t *rc) {
{
if(rc->sw_r ==CMD_SW_UP) cmd ->CMD_CtrlType =MID_NAVI;; //左中,右上,雷达
- if(rc->sw_r ==CMD_SW_MID) cmd ->CMD_UP_mode =Normal; //左中,右中,无模式
- if(rc->sw_r ==CMD_SW_DOWN) cmd ->CMD_UP_mode =Dribble; //左中,右上,运球
-
+ if(rc->sw_r ==CMD_SW_MID)
+ {
+ cmd ->CMD_CtrlType =UP_RCcontrol;
+ cmd ->CMD_UP_mode =Normal; //左中,右中,无模式
+ }
+ if(rc->sw_r ==CMD_SW_DOWN)
+ {
+ cmd ->CMD_UP_mode =Dribble; //左中,右上,运球
+ cmd ->CMD_CtrlType =UP_RCcontrol;
+ }
}
else if(rc->sw_l==CMD_SW_DOWN)
{
diff --git a/User/task/up_task.c b/User/task/up_task.c
index 7064042..66421f7 100644
--- a/User/task/up_task.c
+++ b/User/task/up_task.c
@@ -34,6 +34,7 @@ static CMD_t up_cmd;
float aaa=0;
float bbb=0;
float CCC=0;
+float ddd=0;
/**
@@ -68,9 +69,18 @@ void Task_up(void *argument)
//
// GO_SendData(&UP, 1,CCC);
// GO_SendData(&UP, 0,aaa);
+<<<<<<< Updated upstream
UP_control(&UP,&UP_CAN_out,&up_cmd);
// UP.motor_target .go_shoot =aaa;
// UP.motor_target .M2006_angle =bbb ;
+=======
+// UP_control(&UP,&UP_CAN_out,&up_cmd);
+ UP.motor_target .M3508_angle =CCC;
+ UP.motor_target .go_shoot =aaa;
+ UP.motor_target .M2006_angle =bbb;
+ UP.motor_target .go_spin =ddd;
+
+>>>>>>> Stashed changes
ALL_Motor_Control(&UP,&UP_CAN_out);
osDelay(1);