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);