From bffdb230c6d07bc39ef84e6d8a19e9e629d005ed Mon Sep 17 00:00:00 2001
From: ws <1621320660@qq.com>
Date: Wed, 25 Jun 2025 21:28:23 +0800
Subject: [PATCH] =?UTF-8?q?=E8=BF=90=E7=90=83=E6=94=B9=E6=88=90=E6=97=A0?=
=?UTF-8?q?=E8=AE=A1=E6=AC=A1=E4=BA=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Core/Inc/main.h | 26 ++----
Core/Inc/stm32f4xx_it.h | 1 -
Core/Src/gpio.c | 58 ++----------
Core/Src/stm32f4xx_it.c | 17 +---
MDK-ARM/.vscode/c_cpp_properties.json | 36 ++++----
MDK-ARM/.vscode/keil-assistant.log | 8 ++
MDK-ARM/.vscode/settings.json | 3 +-
MDK-ARM/.vscode/uv4.log | 6 +-
MDK-ARM/.vscode/uv4.log.lock | 2 +-
MDK-ARM/R1.uvoptx | 23 +----
R1.ioc | 96 +++++---------------
User/bsp/TopDefine.h | 2 +-
User/bsp/gpio_it.c | 14 ---
User/device/detect.c | 17 ++--
User/module/ball.cpp | 124 ++++++++++++--------------
User/module/ball.hpp | 2 +-
User/module/shoot.cpp | 17 ++--
User/task/ballTask.cpp | 11 ++-
18 files changed, 150 insertions(+), 313 deletions(-)
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);