diff --git a/Core/Inc/main.h b/Core/Inc/main.h index d75cc80..5cce73e 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -57,13 +57,11 @@ void Error_Handler(void); /* USER CODE END EFP */ /* Private defines -----------------------------------------------------------*/ -#define ext_up_Pin GPIO_PIN_7 -#define ext_up_GPIO_Port GPIOI -#define ext_up_EXTI_IRQn EXTI9_5_IRQn +#define BALL_Pin GPIO_PIN_7 +#define BALL_GPIO_Port GPIOI +#define BALL_EXTI_IRQn EXTI9_5_IRQn #define up_ball_Pin GPIO_PIN_6 #define up_ball_GPIO_Port GPIOI -#define in_ball_Pin GPIO_PIN_6 -#define in_ball_GPIO_Port GPIOC #define IMU_HEAT_PWM_Pin GPIO_PIN_6 #define IMU_HEAT_PWM_GPIO_Port GPIOF #define LED_R_Pin GPIO_PIN_12 @@ -77,24 +75,10 @@ void Error_Handler(void); #define KEY_Pin GPIO_PIN_0 #define KEY_GPIO_Port GPIOA #define KEY_EXTI_IRQn EXTI0_IRQn -#define ACCL_CS_Pin GPIO_PIN_4 -#define ACCL_CS_GPIO_Port GPIOA -#define ACCL_INT_Pin GPIO_PIN_4 -#define ACCL_INT_GPIO_Port GPIOC -#define ACCL_INT_EXTI_IRQn EXTI4_IRQn -#define PAW_Pin GPIO_PIN_13 -#define PAW_GPIO_Port GPIOE -#define GYRO_INT_Pin GPIO_PIN_5 -#define GYRO_INT_GPIO_Port GPIOC -#define GYRO_INT_EXTI_IRQn EXTI9_5_IRQn -#define STOP_Pin GPIO_PIN_9 -#define STOP_GPIO_Port GPIOE -#define CLOSE_Pin GPIO_PIN_11 +#define CLOSE_Pin GPIO_PIN_13 #define CLOSE_GPIO_Port GPIOE -#define DOWN_Pin GPIO_PIN_14 +#define DOWN_Pin GPIO_PIN_11 #define DOWN_GPIO_Port GPIOE -#define GYRO_CS_Pin GPIO_PIN_0 -#define GYRO_CS_GPIO_Port GPIOB /* USER CODE BEGIN Private defines */ diff --git a/Core/Inc/stm32f4xx_it.h b/Core/Inc/stm32f4xx_it.h index 05e63b4..ffcab28 100644 --- a/Core/Inc/stm32f4xx_it.h +++ b/Core/Inc/stm32f4xx_it.h @@ -54,7 +54,6 @@ void UsageFault_Handler(void); void DebugMon_Handler(void); void SysTick_Handler(void); void EXTI0_IRQHandler(void); -void EXTI4_IRQHandler(void); void DMA1_Stream1_IRQHandler(void); void CAN1_RX0_IRQHandler(void); void EXTI9_5_IRQHandler(void); diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c index 3f4ebd5..9724fd8 100644 --- a/Core/Src/gpio.c +++ b/Core/Src/gpio.c @@ -59,19 +59,13 @@ void MX_GPIO_Init(void) HAL_GPIO_WritePin(GPIOH, LED_R_Pin|LED_G_Pin|LED_B_Pin, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(ACCL_CS_GPIO_Port, ACCL_CS_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOE, CLOSE_Pin|DOWN_Pin, GPIO_PIN_RESET); - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOE, PAW_Pin|CLOSE_Pin|DOWN_Pin, GPIO_PIN_RESET); - - /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GYRO_CS_GPIO_Port, GYRO_CS_Pin, GPIO_PIN_SET); - - /*Configure GPIO pin : ext_up_Pin */ - GPIO_InitStruct.Pin = ext_up_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING_FALLING; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(ext_up_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pin : BALL_Pin */ + GPIO_InitStruct.Pin = BALL_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; + GPIO_InitStruct.Pull = GPIO_PULLUP; + HAL_GPIO_Init(BALL_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : up_ball_Pin */ GPIO_InitStruct.Pin = up_ball_Pin; @@ -79,12 +73,6 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(up_ball_GPIO_Port, &GPIO_InitStruct); - /*Configure GPIO pin : in_ball_Pin */ - GPIO_InitStruct.Pin = in_ball_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_INPUT; - GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(in_ball_GPIO_Port, &GPIO_InitStruct); - /*Configure GPIO pins : LED_R_Pin LED_G_Pin LED_B_Pin */ GPIO_InitStruct.Pin = LED_R_Pin|LED_G_Pin|LED_B_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; @@ -98,47 +86,17 @@ void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct); - /*Configure GPIO pin : ACCL_CS_Pin */ - GPIO_InitStruct.Pin = ACCL_CS_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; - HAL_GPIO_Init(ACCL_CS_GPIO_Port, &GPIO_InitStruct); - - /*Configure GPIO pins : ACCL_INT_Pin GYRO_INT_Pin */ - GPIO_InitStruct.Pin = ACCL_INT_Pin|GYRO_INT_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; - GPIO_InitStruct.Pull = GPIO_PULLUP; - HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - - /*Configure GPIO pins : PAW_Pin CLOSE_Pin */ - GPIO_InitStruct.Pin = PAW_Pin|CLOSE_Pin; + /*Configure GPIO pins : CLOSE_Pin DOWN_Pin */ + GPIO_InitStruct.Pin = CLOSE_Pin|DOWN_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); - /*Configure GPIO pin : DOWN_Pin */ - GPIO_InitStruct.Pin = DOWN_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_PULLDOWN; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(DOWN_GPIO_Port, &GPIO_InitStruct); - - /*Configure GPIO pin : GYRO_CS_Pin */ - GPIO_InitStruct.Pin = GYRO_CS_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_PULLUP; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_MEDIUM; - HAL_GPIO_Init(GYRO_CS_GPIO_Port, &GPIO_InitStruct); - /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI0_IRQn, 5, 0); HAL_NVIC_EnableIRQ(EXTI0_IRQn); - HAL_NVIC_SetPriority(EXTI4_IRQn, 5, 0); - HAL_NVIC_EnableIRQ(EXTI4_IRQn); - HAL_NVIC_SetPriority(EXTI9_5_IRQn, 5, 0); HAL_NVIC_EnableIRQ(EXTI9_5_IRQn); diff --git a/Core/Src/stm32f4xx_it.c b/Core/Src/stm32f4xx_it.c index 48f8d8f..0e4a454 100644 --- a/Core/Src/stm32f4xx_it.c +++ b/Core/Src/stm32f4xx_it.c @@ -208,20 +208,6 @@ void EXTI0_IRQHandler(void) /* USER CODE END EXTI0_IRQn 1 */ } -/** - * @brief This function handles EXTI line4 interrupt. - */ -void EXTI4_IRQHandler(void) -{ - /* USER CODE BEGIN EXTI4_IRQn 0 */ - - /* USER CODE END EXTI4_IRQn 0 */ - HAL_GPIO_EXTI_IRQHandler(ACCL_INT_Pin); - /* USER CODE BEGIN EXTI4_IRQn 1 */ - - /* USER CODE END EXTI4_IRQn 1 */ -} - /** * @brief This function handles DMA1 stream1 global interrupt. */ @@ -258,8 +244,7 @@ void EXTI9_5_IRQHandler(void) /* USER CODE BEGIN EXTI9_5_IRQn 0 */ /* USER CODE END EXTI9_5_IRQn 0 */ - HAL_GPIO_EXTI_IRQHandler(GYRO_INT_Pin); - HAL_GPIO_EXTI_IRQHandler(ext_up_Pin); + HAL_GPIO_EXTI_IRQHandler(BALL_Pin); /* USER CODE BEGIN EXTI9_5_IRQn 1 */ /* USER CODE END EXTI9_5_IRQn 1 */ diff --git a/MDK-ARM/.vscode/c_cpp_properties.json b/MDK-ARM/.vscode/c_cpp_properties.json index a07aace..05c8383 100644 --- a/MDK-ARM/.vscode/c_cpp_properties.json +++ b/MDK-ARM/.vscode/c_cpp_properties.json @@ -3,26 +3,26 @@ { "name": "R1", "includePath": [ - "d:\\Desktop\\r1\\R1\\R1_up\\Core\\Inc", - "d:\\Desktop\\r1\\R1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Inc", - "d:\\Desktop\\r1\\R1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Inc\\Legacy", - "d:\\Desktop\\r1\\R1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source\\include", - "d:\\Desktop\\r1\\R1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS_V2", - "d:\\Desktop\\r1\\R1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F", - "d:\\Desktop\\r1\\R1\\R1_up\\Drivers\\CMSIS\\Device\\ST\\STM32F4xx\\Include", - "d:\\Desktop\\r1\\R1\\R1_up\\Drivers\\CMSIS\\Include", - "d:\\Desktop\\r1\\R1\\R1_up\\User\\bsp", - "d:\\Desktop\\r1\\R1\\R1_up\\User\\module", - "d:\\Desktop\\r1\\R1\\R1_up\\User\\task", - "d:\\Desktop\\r1\\R1\\R1_up\\User\\lib", - "d:\\Desktop\\r1\\R1\\R1_up\\User\\device", + "d:\\Desktop\\r1\\R1_up\\Core\\Inc", + "d:\\Desktop\\r1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Inc", + "d:\\Desktop\\r1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Inc\\Legacy", + "d:\\Desktop\\r1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source\\include", + "d:\\Desktop\\r1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source\\CMSIS_RTOS_V2", + "d:\\Desktop\\r1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\RVDS\\ARM_CM4F", + "d:\\Desktop\\r1\\R1_up\\Drivers\\CMSIS\\Device\\ST\\STM32F4xx\\Include", + "d:\\Desktop\\r1\\R1_up\\Drivers\\CMSIS\\Include", + "d:\\Desktop\\r1\\R1_up\\User\\bsp", + "d:\\Desktop\\r1\\R1_up\\User\\module", + "d:\\Desktop\\r1\\R1_up\\User\\task", + "d:\\Desktop\\r1\\R1_up\\User\\lib", + "d:\\Desktop\\r1\\R1_up\\User\\device", "D:\\keil\\ARM\\ARMCC\\include", "D:\\keil\\ARM\\ARMCC\\include\\rw", - "d:\\Desktop\\r1\\R1\\R1_up\\MDK-ARM", - "d:\\Desktop\\r1\\R1\\R1_up\\Core\\Src", - "d:\\Desktop\\r1\\R1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Src", - "d:\\Desktop\\r1\\R1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source", - "d:\\Desktop\\r1\\R1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\MemMang" + "d:\\Desktop\\r1\\R1_up\\MDK-ARM", + "d:\\Desktop\\r1\\R1_up\\Core\\Src", + "d:\\Desktop\\r1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Src", + "d:\\Desktop\\r1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source", + "d:\\Desktop\\r1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\MemMang" ], "defines": [ "USE_HAL_DRIVER", diff --git a/MDK-ARM/.vscode/keil-assistant.log b/MDK-ARM/.vscode/keil-assistant.log index d299dca..7ded289 100644 --- a/MDK-ARM/.vscode/keil-assistant.log +++ b/MDK-ARM/.vscode/keil-assistant.log @@ -66,3 +66,11 @@ [info] Log at : 2025/6/25|09:51:44|GMT+0800 +[info] Log at : 2025/6/25|12:54:37|GMT+0800 + +[info] Log at : 2025/6/25|15:34:37|GMT+0800 + +[info] Log at : 2025/6/25|16:10:47|GMT+0800 + +[info] Log at : 2025/6/25|19:23:57|GMT+0800 + diff --git a/MDK-ARM/.vscode/settings.json b/MDK-ARM/.vscode/settings.json index bb6a2f9..e5a3724 100644 --- a/MDK-ARM/.vscode/settings.json +++ b/MDK-ARM/.vscode/settings.json @@ -4,6 +4,7 @@ "user_math.h": "c", "buzzer.h": "c", "calc_lib.h": "c", - "usertask.h": "c" + "usertask.h": "c", + "detect.h": "c" } } \ No newline at end of file diff --git a/MDK-ARM/.vscode/uv4.log b/MDK-ARM/.vscode/uv4.log index 41a6d6b..48af34e 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 shoot.cpp... +compiling ball.cpp... linking... -Program Size: Code=31344 RO-data=1832 RW-data=268 ZI-data=32252 +Program Size: Code=31076 RO-data=1832 RW-data=268 ZI-data=32252 FromELF: creating hex file... "R1\R1.axf" - 0 Error(s), 0 Warning(s). -Build Time Elapsed: 00:00:05 +Build Time Elapsed: 00:00:06 diff --git a/MDK-ARM/.vscode/uv4.log.lock b/MDK-ARM/.vscode/uv4.log.lock index 5d1c280..66b39d7 100644 --- a/MDK-ARM/.vscode/uv4.log.lock +++ b/MDK-ARM/.vscode/uv4.log.lock @@ -1 +1 @@ -2025/6/25 9:57:28 \ No newline at end of file +2025/6/25 21:22:14 \ No newline at end of file diff --git a/MDK-ARM/R1.uvoptx b/MDK-ARM/R1.uvoptx index 391746e..269e98a 100644 --- a/MDK-ARM/R1.uvoptx +++ b/MDK-ARM/R1.uvoptx @@ -158,7 +158,7 @@ 0 1 - ball,0x0A + rc_ctrl 1 @@ -168,27 +168,12 @@ 2 1 - triggerCount,0x0A + ball,0x0A 3 1 - abc,0x0A - - - 4 - 1 - rc_ctrl,0x0A - - - 5 - 1 - nucbuf - - - 6 - 1 - nuc_v + ball_exit,0x0A @@ -949,7 +934,7 @@ User/device - 1 + 0 0 0 0 diff --git a/R1.ioc b/R1.ioc index b80f97b..cddf3c6 100644 --- a/R1.ioc +++ b/R1.ioc @@ -144,36 +144,29 @@ Mcu.Pin14=PD1 Mcu.Pin15=PA9 Mcu.Pin16=PH0-OSC_IN Mcu.Pin17=PH1-OSC_OUT -Mcu.Pin18=PC6 -Mcu.Pin19=PF6 +Mcu.Pin18=PF6 +Mcu.Pin19=PH12 Mcu.Pin2=PB4 -Mcu.Pin20=PH12 -Mcu.Pin21=PH11 -Mcu.Pin22=PH10 -Mcu.Pin23=PD14 -Mcu.Pin24=PA0-WKUP -Mcu.Pin25=PA4 -Mcu.Pin26=PC4 -Mcu.Pin27=PE13 -Mcu.Pin28=PC5 -Mcu.Pin29=PE9 +Mcu.Pin20=PH11 +Mcu.Pin21=PH10 +Mcu.Pin22=PD14 +Mcu.Pin23=PA0-WKUP +Mcu.Pin24=PE13 +Mcu.Pin25=PE11 +Mcu.Pin26=PA7 +Mcu.Pin27=VP_CRC_VS_CRC +Mcu.Pin28=VP_FREERTOS_VS_CMSIS_V2 +Mcu.Pin29=VP_SYS_VS_Systick Mcu.Pin3=PB3 -Mcu.Pin30=PE11 -Mcu.Pin31=PE14 -Mcu.Pin32=PA7 -Mcu.Pin33=PB0 -Mcu.Pin34=VP_CRC_VS_CRC -Mcu.Pin35=VP_FREERTOS_VS_CMSIS_V2 -Mcu.Pin36=VP_SYS_VS_Systick -Mcu.Pin37=VP_TIM4_VS_ClockSourceINT -Mcu.Pin38=VP_TIM10_VS_ClockSourceINT +Mcu.Pin30=VP_TIM4_VS_ClockSourceINT +Mcu.Pin31=VP_TIM10_VS_ClockSourceINT Mcu.Pin4=PA14 Mcu.Pin5=PA13 Mcu.Pin6=PB7 Mcu.Pin7=PB6 Mcu.Pin8=PD0 Mcu.Pin9=PC11 -Mcu.PinsNb=39 +Mcu.PinsNb=32 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F407IGHx @@ -191,7 +184,6 @@ NVIC.DMA2_Stream6_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA2_Stream7_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.EXTI0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true -NVIC.EXTI4_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true\:true NVIC.EXTI9_5_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true\:true NVIC.ForceEnableDMAVector=true NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false @@ -219,13 +211,6 @@ PA13.Mode=Serial_Wire PA13.Signal=SYS_JTMS-SWDIO PA14.Mode=Serial_Wire PA14.Signal=SYS_JTCK-SWCLK -PA4.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label -PA4.GPIO_Label=ACCL_CS -PA4.GPIO_PuPd=GPIO_PULLUP -PA4.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM -PA4.Locked=true -PA4.PinState=GPIO_PIN_SET -PA4.Signal=GPIO_Output PA7.GPIOParameters=GPIO_PuPd PA7.GPIO_PuPd=GPIO_PULLUP PA7.Mode=Full_Duplex_Master @@ -233,13 +218,6 @@ PA7.Signal=SPI1_MOSI PA9.Locked=true PA9.Mode=Asynchronous PA9.Signal=USART1_TX -PB0.GPIOParameters=GPIO_Speed,PinState,GPIO_PuPd,GPIO_Label -PB0.GPIO_Label=GYRO_CS -PB0.GPIO_PuPd=GPIO_PULLUP -PB0.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM -PB0.Locked=true -PB0.PinState=GPIO_PIN_SET -PB0.Signal=GPIO_Output PB3.GPIOParameters=GPIO_PuPd PB3.GPIO_PuPd=GPIO_PULLUP PB3.Mode=Full_Duplex_Master @@ -258,20 +236,6 @@ PC10.Mode=Asynchronous PC10.Signal=USART3_TX PC11.Mode=Asynchronous PC11.Signal=USART3_RX -PC4.GPIOParameters=GPIO_PuPd,GPIO_Label -PC4.GPIO_Label=ACCL_INT -PC4.GPIO_PuPd=GPIO_PULLUP -PC4.Locked=true -PC4.Signal=GPXTI4 -PC5.GPIOParameters=GPIO_PuPd,GPIO_Label -PC5.GPIO_Label=GYRO_INT -PC5.GPIO_PuPd=GPIO_PULLUP -PC5.Locked=true -PC5.Signal=GPXTI5 -PC6.GPIOParameters=GPIO_Label -PC6.GPIO_Label=in-ball -PC6.Locked=true -PC6.Signal=GPIO_Input PD0.Locked=true PD0.Mode=CAN_Activate PD0.Signal=CAN1_RX @@ -283,25 +247,13 @@ PD14.GPIO_Label=Buzzer PD14.Locked=true PD14.Signal=S_TIM4_CH3 PE11.GPIOParameters=GPIO_Label -PE11.GPIO_Label=CLOSE +PE11.GPIO_Label=DOWN PE11.Locked=true PE11.Signal=GPIO_Output PE13.GPIOParameters=GPIO_Label -PE13.GPIO_Label=PAW +PE13.GPIO_Label=CLOSE PE13.Locked=true PE13.Signal=GPIO_Output -PE14.GPIOParameters=GPIO_PuPd,GPIO_Label -PE14.GPIO_Label=DOWN -PE14.GPIO_PuPd=GPIO_PULLDOWN -PE14.Locked=true -PE14.Signal=GPIO_Output -PE9.GPIOParameters=PinState,GPIO_PuPd,GPIO_Label -PE9.GPIO_Label=STOP -PE9.GPIO_PuPd=GPIO_PULLDOWN -PE9.Locked=true -PE9.PinState=GPIO_PIN_SET -PE9.Signal=SharedStack_PE9 -PE9.Stacked=true PF6.GPIOParameters=GPIO_Speed,GPIO_Label PF6.GPIO_Label=IMU_HEAT_PWM PF6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH @@ -341,9 +293,10 @@ PI6.GPIO_Label=up-ball PI6.GPIO_PuPd=GPIO_PULLDOWN PI6.Locked=true PI6.Signal=GPIO_Input -PI7.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI -PI7.GPIO_Label=ext-up -PI7.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING +PI7.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI +PI7.GPIO_Label=BALL +PI7.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING +PI7.GPIO_PuPd=GPIO_PULLUP PI7.Locked=true PI7.Signal=GPXTI7 PinOutPanel.CurrentBGAView=Top @@ -416,19 +369,12 @@ RCC.VCOOutputFreq_Value=336000000 RCC.VcooutputI2S=192000000 SH.GPXTI0.0=GPIO_EXTI0 SH.GPXTI0.ConfNb=1 -SH.GPXTI4.0=GPIO_EXTI4 -SH.GPXTI4.ConfNb=1 -SH.GPXTI5.0=GPIO_EXTI5 -SH.GPXTI5.ConfNb=1 SH.GPXTI7.0=GPIO_EXTI7 SH.GPXTI7.ConfNb=1 SH.S_TIM10_CH1.0=TIM10_CH1,PWM Generation1 CH1 SH.S_TIM10_CH1.ConfNb=1 SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3 SH.S_TIM4_CH3.ConfNb=1 -SH.SharedStack_PE9.0=GPIO_Output+0 -SH.SharedStack_PE9.1=GPIO_Input -SH.SharedStack_PE9.ConfNb=2 SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16 SPI1.CLKPhase=SPI_PHASE_2EDGE SPI1.CLKPolarity=SPI_POLARITY_HIGH diff --git a/User/bsp/TopDefine.h b/User/bsp/TopDefine.h index 9f9a78e..1308809 100644 --- a/User/bsp/TopDefine.h +++ b/User/bsp/TopDefine.h @@ -16,7 +16,7 @@ #endif -#define ONE_CONTROL 1 +#define ONE_CONTROL 0 //是否使用大疆DT7遥控器 #ifndef DT7 #define DT7 0 diff --git a/User/bsp/gpio_it.c b/User/bsp/gpio_it.c index b09f56f..9d81971 100644 --- a/User/bsp/gpio_it.c +++ b/User/bsp/gpio_it.c @@ -34,13 +34,6 @@ int8_t BSP_GPIO_RegisterCallback(uint16_t pin, void (*callback)(void)) { int8_t BSP_GPIO_EnableIRQ(uint16_t pin) { switch (pin) { - case ACCL_INT_Pin: - HAL_NVIC_EnableIRQ(ACCL_INT_EXTI_IRQn); - break; - - case GYRO_INT_Pin: - HAL_NVIC_EnableIRQ(GYRO_INT_EXTI_IRQn); - break; // case USER_KEY_Pin: // HAL_NVIC_EnableIRQ(USER_KEY_EXTI_IRQn); @@ -60,13 +53,6 @@ int8_t BSP_GPIO_EnableIRQ(uint16_t pin) { int8_t BSP_GPIO_DisableIRQ(uint16_t pin) { switch (pin) { - case ACCL_INT_Pin: - HAL_NVIC_DisableIRQ(ACCL_INT_EXTI_IRQn); - break; - - case GYRO_INT_Pin: - HAL_NVIC_DisableIRQ(GYRO_INT_EXTI_IRQn); - break; // case USER_KEY_Pin: // HAL_NVIC_DisableIRQ(USER_KEY_EXTI_IRQn); diff --git a/User/device/detect.c b/User/device/detect.c index 90b75ed..3c48a2b 100644 --- a/User/device/detect.c +++ b/User/device/detect.c @@ -2,6 +2,7 @@ #include "gpio_it.h" // 确保包含 GPIO 中断相关头文件 #include "bsp_delay.h" int key=0; +int ball_exit=0; // 按键中断回调函数 void detect_exit(void) @@ -11,11 +12,11 @@ void detect_exit(void) key++; // 按键按下时变量自增 __HAL_GPIO_EXTI_CLEAR_IT(KEY_Pin); // 清除中断标志位 } -void detect_led(void) +void detect_ball(void) { - delay_ms(10); // 延时10ms - key++; // 按键按下时变量自增 - __HAL_GPIO_EXTI_CLEAR_IT(ext_up_Pin); // 清除中断标志位 + + ball_exit++; // 按键按下时变量自增 + __HAL_GPIO_EXTI_CLEAR_IT(BALL_Pin); // 清除中断标志位 } @@ -24,17 +25,13 @@ void detect_init(void) { BSP_GPIO_RegisterCallback(KEY_Pin, detect_exit); - // BSP_GPIO_RegisterCallback(ext_up_Pin, detect_led); - // 注册按键中断回调函数 - if (BSP_GPIO_RegisterCallback(KEY_Pin, detect_exit) != BSP_OK) { - // 错误处理 - } + BSP_GPIO_RegisterCallback(BALL_Pin, detect_ball); // 启用按键中断 if (BSP_GPIO_EnableIRQ(KEY_Pin) != BSP_OK) { // 错误处理 } - if (BSP_GPIO_EnableIRQ(ext_up_Pin) != BSP_OK) { + if (BSP_GPIO_EnableIRQ(BALL_Pin) != BSP_OK) { // 错误处理 } diff --git a/User/module/ball.cpp b/User/module/ball.cpp index 124fc96..1a15f5c 100644 --- a/User/module/ball.cpp +++ b/User/module/ball.cpp @@ -7,6 +7,7 @@ #include "shoot.hpp" extern RC_ctrl_t rc_ctrl; +extern int ball_exit; //伸缩 #define I_ANGLE 147 @@ -26,7 +27,7 @@ Ball ::Ball() xiaomi.speed = 25; // xiaomi.K_P = 80; // 位置增益 xiaomi.K_D =20; // 位置阻尼 - xiaomi.K_C = 50 ; // 力矩 + xiaomi.K_C = 12 ; // 力矩 xiaomi.Pmax =1; //好像没啥用 // //小米电机初始化 @@ -86,7 +87,7 @@ void Ball::Send_control() void Ball::ballDown(void) { - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_SET); // 打开气缸爪子 + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_SET); // 打开气缸爪子 HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭 } @@ -111,7 +112,7 @@ void Ball::ball_control() switch (rc_key){ case MIDDLE2: - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); //确保爪气缸关闭 + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); //确保爪气缸关闭 HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭 if (currentState1 == BALL_FINISH) { @@ -128,6 +129,7 @@ void Ball::ball_control() case DOWN2: ballHadling(); + //test_Handling(); break; @@ -137,28 +139,28 @@ void Ball::ball_control() } + int ball_state = 0; - int triggerCount = 0; // 光电传感器触发计数 - int last_ball_state = 1; // 上一次的光电状态 -//(有球 0,无球 1) + int last_ball_state = 0; // 上一次的光电状态 + void Ball::ballHadling(void) { switch (currentState1) { case BALL_IDLE: - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); //确保爪气缸关闭 + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); //确保爪气缸关闭 HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭 if (rc_key == DOWN2) // 检测按键是否被按下 { - triggerCount = 0; // 重置触发计数 + currentState1 = BALL_FORWARD; } break; case BALL_FORWARD: - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_SET); // 打开气缸爪子 + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_SET); // 打开气缸爪子 osDelay(5); HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_SET); // 打开下气缸 currentState1 = BALL_DROP; // 切换到球下落状态 @@ -167,44 +169,36 @@ void Ball::ballHadling(void) case BALL_DROP: osDelay(100); // 延时 100ms HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 关闭下气缸 - if (ball_state == 0 && last_ball_state == 1) // 检测到状态从无球变为有球 + // 一直检测有球(ball_state == 0),等球离开 + if (ball_state == 1 && last_ball_state == 0) // 球离开 { - //osDelay(10); // 延时去抖动 - triggerCount++; // 增加触发计数 - if (triggerCount == 1) // 第一次触发 - { - currentState1 = BALL_FLAG; // 切换到等待第二次触发状态 - } + currentState1 = BALL_FLAG; } - last_ball_state = ball_state; // 更新上一次的状态 + last_ball_state = ball_state; break; case BALL_FLAG: osDelay(10); // 延时 50ms - if (triggerCount == 1 && ball_state == 0 && last_ball_state == 1) // 第二次检测到球 + // 等待球弹回再次检测到球 + if (ball_state == 0 && last_ball_state == 1) // 球弹回 { - triggerCount++; // 增加触发计数 - currentState1 = BALL_CLOSE; // 切换到闭合气缸状态 + currentState1 = BALL_CLOSE; } - last_ball_state = ball_state; // 更新上一次的状态 + last_ball_state = ball_state; break; case BALL_CLOSE: - if (triggerCount == 2) // 确保是第二次触发 - { - osDelay(50); - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 闭合气缸爪子 + + osDelay(25); + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 闭合气缸爪子 currentState1 = BALL_FINISH; // 切换到反转状态 - } break; case BALL_FINISH: osDelay(50); // 延时 50ms - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 确保气缸爪子闭合 + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 确保气缸爪子闭合 HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭 - triggerCount = 0; // 重置触发计数 - //currentState1 = BALL_IDLE; // 回到空闲状态 break; @@ -215,7 +209,10 @@ void Ball::ballHadling(void) } -} + } + + + #endif #if ONE_CONTROL @@ -260,7 +257,7 @@ void Ball::ballDown(void) break; case EXTEND_DOWN: - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 检测到球自由下落一次就切换状态 if(ball_state == 0) @@ -291,7 +288,7 @@ void Ball::ballDown(void) void Ball::Idle_control() { - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 确保爪气缸关闭 + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 确保爪气缸关闭 HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭 osThreadFlagsClear(PREPARE); @@ -317,31 +314,26 @@ void Ball::Idle_control() } int ball_state = 0; - int triggerCount = 0; // 光电传感器触发计数 - int last_ball_state = 1; // 上一次的光电状态 -//(有球 0,无球 1) + int last_ball_state = 0; // 上一次的光电状态 + void Ball::ballHadling(void) { switch (currentState1) { case BALL_IDLE: - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); //确保爪气缸关闭 + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); //确保爪气缸关闭 HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭 - if (rc_key == DOWN2) - { - xiaomi.position = O_ANGLE;//外伸 - triggerCount = 0; // 重置触发计数 - if(feedback->position_deg>= O_ANGLE-1)// 确保伸缩电机到位 - { - currentState1 = BALL_FORWARD; - } - + if (rc_key == DOWN2) // 检测按键是否被按下 + { + + + currentState1 = BALL_FORWARD; } break; case BALL_FORWARD: - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_SET); // 打开气缸爪子 + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_SET); // 打开气缸爪子 osDelay(5); HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_SET); // 打开下气缸 currentState1 = BALL_DROP; // 切换到球下落状态 @@ -350,42 +342,39 @@ void Ball::ballHadling(void) case BALL_DROP: osDelay(100); // 延时 100ms HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 关闭下气缸 - if (ball_state == 0 && last_ball_state == 1) // 检测到状态从无球变为有球 + // 一直检测有球(ball_state == 0),等球离开 + if (ball_state == 1 && last_ball_state == 0) // 球离开 { - triggerCount++; // 增加触发计数 - if (triggerCount == 1) // 第一次触发 - { - currentState1 = BALL_FLAG; // 切换到等待第二次触发状态 - } + currentState1 = BALL_FLAG; } - last_ball_state = ball_state; // 更新上一次的状态 + last_ball_state = ball_state; break; case BALL_FLAG: - // osDelay(10); // 延时 50ms - if (triggerCount == 1 && ball_state == 0 && last_ball_state == 1) // 第二次检测到球 + osDelay(10); // 延时 50ms + // 等待球弹回再次检测到球 + if (ball_state == 0 && last_ball_state == 1) // 球弹回 { - triggerCount++; // 增加触发计数 - currentState1 = BALL_CLOSE; // 切换到闭合气缸状态 + currentState1 = BALL_CLOSE; } - last_ball_state = ball_state; // 更新上一次的状态 + last_ball_state = ball_state; break; case BALL_CLOSE: - if (triggerCount == 2) // 确保是第二次触发 - { - osDelay(50); - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 闭合气缸爪子 + + osDelay(25); + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 闭合气缸爪子 currentState1 = BALL_FINISH; // 切换到反转状态 - } break; case BALL_FINISH: osDelay(50); // 延时 50ms - HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 确保气缸爪子闭合 + HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 确保气缸爪子闭合 HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭 - - triggerCount = 0; // 重置触发计数 + + + + //currentState1 = BALL_IDLE; // 回到空闲状态 break; @@ -395,7 +384,8 @@ void Ball::ballHadling(void) } -} + } + #endif diff --git a/User/module/ball.hpp b/User/module/ball.hpp index b0b10cf..2dd7da9 100644 --- a/User/module/ball.hpp +++ b/User/module/ball.hpp @@ -62,7 +62,7 @@ public: void Move_Extend(void); void Idle_control(void); void rc_mode(void); - void Extend_mcontrol(int angle1,int angle2); + void test_Handling(void); void ball_control(void); BallState_t currentState1; // 运球任务状态机 diff --git a/User/module/shoot.cpp b/User/module/shoot.cpp index 754bd4a..545462c 100644 --- a/User/module/shoot.cpp +++ b/User/module/shoot.cpp @@ -126,6 +126,7 @@ int Shoot::GO_SendData(float pos,float limit) // E键 sw[1] 👆 200 shoot 中 1000 stop sw[2]200 sw[2]👇1800 // G键 sw[6]👆 1800 中 1000 👇200 // B键 sw[3]👆 200 开 中 1000 👇1800 关 +// sw[5] 👆 200 👇1800 //左旋 sw[7] 200 --1800 void Shoot::rc_mode() { @@ -149,7 +150,11 @@ void Shoot::rc_mode() { mode_key=VSION; } - if(rc_ctrl.sw[3]==1800) + // if(rc_ctrl.sw[5]==200) + // { + // mode_key=OUT; + // } + if(rc_ctrl.sw[5]==1800) { ready_key=PREPARE; } @@ -158,16 +163,6 @@ void Shoot::rc_mode() ready_key=0; //默认不准备 } - - // if(rc_ctrl.sw[7]==200) - // { - // trigger_key=WAIT; - // } - // if(rc_ctrl.sw[7]==1800) - // { - // trigger_key=SHOOT; - // } - // //旋钮增量 // static int last_knob_value = 0; // 记录旋钮的上一次值 // int current_knob_value = rc_ctrl.sw[7]; // 获取当前旋钮值 diff --git a/User/task/ballTask.cpp b/User/task/ballTask.cpp index 5c2d173..dca3947 100644 --- a/User/task/ballTask.cpp +++ b/User/task/ballTask.cpp @@ -22,8 +22,8 @@ void FunctionBall(void *argument) const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_BALL; - osDelay(6000);//等待极致控制板启动 - XiaomiWait_init(1,&hcan2); //小米电机初始化 +// osDelay(6000);//等待极致控制板启动 +// XiaomiWait_init(1,&hcan2); //小米电机初始化 uint32_t tick = osKernelGetTickCount(); @@ -35,9 +35,12 @@ void FunctionBall(void *argument) abc=HAL_GPIO_ReadPin(up_ball_GPIO_Port, up_ball_Pin); - ball.rc_mode(); // 遥控器模式 + ball.rc_mode(); // 遥控器模式 - ball.ball_control(); // 控制球的动作 + ball.ball_control(); // 控制球的动作 + +// HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_SET); // 确保气缸爪子闭合 +// HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_SET); // 确保下气缸关闭 // ball.xiaomi.position = aaaa; // CAN_XiaoMi(1,&ball.xiaomi,&hcan2);