Compare commits
2 Commits
f5a40b99b1
...
e420cea621
Author | SHA1 | Date | |
---|---|---|---|
e420cea621 | |||
bffdb230c6 |
@ -57,13 +57,11 @@ void Error_Handler(void);
|
|||||||
/* USER CODE END EFP */
|
/* USER CODE END EFP */
|
||||||
|
|
||||||
/* Private defines -----------------------------------------------------------*/
|
/* Private defines -----------------------------------------------------------*/
|
||||||
#define ext_up_Pin GPIO_PIN_7
|
#define BALL_Pin GPIO_PIN_7
|
||||||
#define ext_up_GPIO_Port GPIOI
|
#define BALL_GPIO_Port GPIOI
|
||||||
#define ext_up_EXTI_IRQn EXTI9_5_IRQn
|
#define BALL_EXTI_IRQn EXTI9_5_IRQn
|
||||||
#define up_ball_Pin GPIO_PIN_6
|
#define up_ball_Pin GPIO_PIN_6
|
||||||
#define up_ball_GPIO_Port GPIOI
|
#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_Pin GPIO_PIN_6
|
||||||
#define IMU_HEAT_PWM_GPIO_Port GPIOF
|
#define IMU_HEAT_PWM_GPIO_Port GPIOF
|
||||||
#define LED_R_Pin GPIO_PIN_12
|
#define LED_R_Pin GPIO_PIN_12
|
||||||
@ -77,24 +75,10 @@ void Error_Handler(void);
|
|||||||
#define KEY_Pin GPIO_PIN_0
|
#define KEY_Pin GPIO_PIN_0
|
||||||
#define KEY_GPIO_Port GPIOA
|
#define KEY_GPIO_Port GPIOA
|
||||||
#define KEY_EXTI_IRQn EXTI0_IRQn
|
#define KEY_EXTI_IRQn EXTI0_IRQn
|
||||||
#define ACCL_CS_Pin GPIO_PIN_4
|
#define CLOSE_Pin GPIO_PIN_13
|
||||||
#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_GPIO_Port GPIOE
|
#define CLOSE_GPIO_Port GPIOE
|
||||||
#define DOWN_Pin GPIO_PIN_14
|
#define DOWN_Pin GPIO_PIN_11
|
||||||
#define DOWN_GPIO_Port GPIOE
|
#define DOWN_GPIO_Port GPIOE
|
||||||
#define GYRO_CS_Pin GPIO_PIN_0
|
|
||||||
#define GYRO_CS_GPIO_Port GPIOB
|
|
||||||
|
|
||||||
/* USER CODE BEGIN Private defines */
|
/* USER CODE BEGIN Private defines */
|
||||||
|
|
||||||
|
@ -54,7 +54,6 @@ void UsageFault_Handler(void);
|
|||||||
void DebugMon_Handler(void);
|
void DebugMon_Handler(void);
|
||||||
void SysTick_Handler(void);
|
void SysTick_Handler(void);
|
||||||
void EXTI0_IRQHandler(void);
|
void EXTI0_IRQHandler(void);
|
||||||
void EXTI4_IRQHandler(void);
|
|
||||||
void DMA1_Stream1_IRQHandler(void);
|
void DMA1_Stream1_IRQHandler(void);
|
||||||
void CAN1_RX0_IRQHandler(void);
|
void CAN1_RX0_IRQHandler(void);
|
||||||
void EXTI9_5_IRQHandler(void);
|
void EXTI9_5_IRQHandler(void);
|
||||||
|
@ -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);
|
HAL_GPIO_WritePin(GPIOH, LED_R_Pin|LED_G_Pin|LED_B_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*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 */
|
/*Configure GPIO pin : BALL_Pin */
|
||||||
HAL_GPIO_WritePin(GPIOE, PAW_Pin|CLOSE_Pin|DOWN_Pin, GPIO_PIN_RESET);
|
GPIO_InitStruct.Pin = BALL_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;
|
||||||
/*Configure GPIO pin Output Level */
|
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||||
HAL_GPIO_WritePin(GYRO_CS_GPIO_Port, GYRO_CS_Pin, GPIO_PIN_SET);
|
HAL_GPIO_Init(BALL_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*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 : up_ball_Pin */
|
/*Configure GPIO pin : up_ball_Pin */
|
||||||
GPIO_InitStruct.Pin = up_ball_Pin;
|
GPIO_InitStruct.Pin = up_ball_Pin;
|
||||||
@ -79,12 +73,6 @@ void MX_GPIO_Init(void)
|
|||||||
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
|
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
|
||||||
HAL_GPIO_Init(up_ball_GPIO_Port, &GPIO_InitStruct);
|
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 */
|
/*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.Pin = LED_R_Pin|LED_G_Pin|LED_B_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
@ -98,47 +86,17 @@ void MX_GPIO_Init(void)
|
|||||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||||
HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(KEY_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*Configure GPIO pin : ACCL_CS_Pin */
|
/*Configure GPIO pins : CLOSE_Pin DOWN_Pin */
|
||||||
GPIO_InitStruct.Pin = ACCL_CS_Pin;
|
GPIO_InitStruct.Pin = CLOSE_Pin|DOWN_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;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
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*/
|
/* EXTI interrupt init*/
|
||||||
HAL_NVIC_SetPriority(EXTI0_IRQn, 5, 0);
|
HAL_NVIC_SetPriority(EXTI0_IRQn, 5, 0);
|
||||||
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
|
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_SetPriority(EXTI9_5_IRQn, 5, 0);
|
||||||
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
|
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
|
||||||
|
|
||||||
|
@ -208,20 +208,6 @@ void EXTI0_IRQHandler(void)
|
|||||||
/* USER CODE END EXTI0_IRQn 1 */
|
/* 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.
|
* @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 BEGIN EXTI9_5_IRQn 0 */
|
||||||
|
|
||||||
/* USER CODE END EXTI9_5_IRQn 0 */
|
/* USER CODE END EXTI9_5_IRQn 0 */
|
||||||
HAL_GPIO_EXTI_IRQHandler(GYRO_INT_Pin);
|
HAL_GPIO_EXTI_IRQHandler(BALL_Pin);
|
||||||
HAL_GPIO_EXTI_IRQHandler(ext_up_Pin);
|
|
||||||
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
|
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
|
||||||
|
|
||||||
/* USER CODE END EXTI9_5_IRQn 1 */
|
/* USER CODE END EXTI9_5_IRQn 1 */
|
||||||
|
36
MDK-ARM/.vscode/c_cpp_properties.json
vendored
36
MDK-ARM/.vscode/c_cpp_properties.json
vendored
@ -3,26 +3,26 @@
|
|||||||
{
|
{
|
||||||
"name": "R1",
|
"name": "R1",
|
||||||
"includePath": [
|
"includePath": [
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\Core\\Inc",
|
"d:\\Desktop\\r1\\R1_up\\Core\\Inc",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Inc",
|
"d:\\Desktop\\r1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Inc",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Inc\\Legacy",
|
"d:\\Desktop\\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_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_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_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_up\\Drivers\\CMSIS\\Device\\ST\\STM32F4xx\\Include",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\Drivers\\CMSIS\\Include",
|
"d:\\Desktop\\r1\\R1_up\\Drivers\\CMSIS\\Include",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\User\\bsp",
|
"d:\\Desktop\\r1\\R1_up\\User\\bsp",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\User\\module",
|
"d:\\Desktop\\r1\\R1_up\\User\\module",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\User\\task",
|
"d:\\Desktop\\r1\\R1_up\\User\\task",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\User\\lib",
|
"d:\\Desktop\\r1\\R1_up\\User\\lib",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\User\\device",
|
"d:\\Desktop\\r1\\R1_up\\User\\device",
|
||||||
"D:\\keil\\ARM\\ARMCC\\include",
|
"D:\\keil\\ARM\\ARMCC\\include",
|
||||||
"D:\\keil\\ARM\\ARMCC\\include\\rw",
|
"D:\\keil\\ARM\\ARMCC\\include\\rw",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\MDK-ARM",
|
"d:\\Desktop\\r1\\R1_up\\MDK-ARM",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\Core\\Src",
|
"d:\\Desktop\\r1\\R1_up\\Core\\Src",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Src",
|
"d:\\Desktop\\r1\\R1_up\\Drivers\\STM32F4xx_HAL_Driver\\Src",
|
||||||
"d:\\Desktop\\r1\\R1\\R1_up\\Middlewares\\Third_Party\\FreeRTOS\\Source",
|
"d:\\Desktop\\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\\Middlewares\\Third_Party\\FreeRTOS\\Source\\portable\\MemMang"
|
||||||
],
|
],
|
||||||
"defines": [
|
"defines": [
|
||||||
"USE_HAL_DRIVER",
|
"USE_HAL_DRIVER",
|
||||||
|
8
MDK-ARM/.vscode/keil-assistant.log
vendored
8
MDK-ARM/.vscode/keil-assistant.log
vendored
@ -66,3 +66,11 @@
|
|||||||
|
|
||||||
[info] Log at : 2025/6/25|09:51:44|GMT+0800
|
[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
|
||||||
|
|
||||||
|
3
MDK-ARM/.vscode/settings.json
vendored
3
MDK-ARM/.vscode/settings.json
vendored
@ -4,6 +4,7 @@
|
|||||||
"user_math.h": "c",
|
"user_math.h": "c",
|
||||||
"buzzer.h": "c",
|
"buzzer.h": "c",
|
||||||
"calc_lib.h": "c",
|
"calc_lib.h": "c",
|
||||||
"usertask.h": "c"
|
"usertask.h": "c",
|
||||||
|
"detect.h": "c"
|
||||||
}
|
}
|
||||||
}
|
}
|
6
MDK-ARM/.vscode/uv4.log
vendored
6
MDK-ARM/.vscode/uv4.log
vendored
@ -1,8 +1,10 @@
|
|||||||
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'D:\keil\ARM\ARMCC\Bin'
|
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'D:\keil\ARM\ARMCC\Bin'
|
||||||
Build target 'R1'
|
Build target 'R1'
|
||||||
|
compiling shootTask.cpp...
|
||||||
compiling shoot.cpp...
|
compiling shoot.cpp...
|
||||||
|
compiling ball.cpp...
|
||||||
linking...
|
linking...
|
||||||
Program Size: Code=31344 RO-data=1832 RW-data=268 ZI-data=32252
|
Program Size: Code=31644 RO-data=1832 RW-data=268 ZI-data=32252
|
||||||
FromELF: creating hex file...
|
FromELF: creating hex file...
|
||||||
"R1\R1.axf" - 0 Error(s), 0 Warning(s).
|
"R1\R1.axf" - 0 Error(s), 0 Warning(s).
|
||||||
Build Time Elapsed: 00:00:05
|
Build Time Elapsed: 00:00:06
|
||||||
|
2
MDK-ARM/.vscode/uv4.log.lock
vendored
2
MDK-ARM/.vscode/uv4.log.lock
vendored
@ -1 +1 @@
|
|||||||
2025/6/25 9:57:28
|
2025/6/26 3:22:31
|
@ -158,7 +158,7 @@
|
|||||||
<Ww>
|
<Ww>
|
||||||
<count>0</count>
|
<count>0</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>ball,0x0A</ItemText>
|
<ItemText>rc_ctrl</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>1</count>
|
<count>1</count>
|
||||||
@ -168,29 +168,32 @@
|
|||||||
<Ww>
|
<Ww>
|
||||||
<count>2</count>
|
<count>2</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>triggerCount,0x0A</ItemText>
|
<ItemText>ball,0x0A</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>3</count>
|
<count>3</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>abc,0x0A</ItemText>
|
<ItemText>ball_exit,0x0A</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>4</count>
|
<count>4</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>rc_ctrl,0x0A</ItemText>
|
<ItemText>nucbuf</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
<Ww>
|
<Ww>
|
||||||
<count>5</count>
|
<count>5</count>
|
||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>nucbuf</ItemText>
|
|
||||||
</Ww>
|
|
||||||
<Ww>
|
|
||||||
<count>6</count>
|
|
||||||
<WinNumber>1</WinNumber>
|
|
||||||
<ItemText>nuc_v</ItemText>
|
<ItemText>nuc_v</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
|
<MemoryWindow4>
|
||||||
|
<Mm>
|
||||||
|
<WinNumber>4</WinNumber>
|
||||||
|
<SubType>0</SubType>
|
||||||
|
<ItemText>nucbuf</ItemText>
|
||||||
|
<AccSizeX>0</AccSizeX>
|
||||||
|
</Mm>
|
||||||
|
</MemoryWindow4>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
</Tracepoint>
|
</Tracepoint>
|
||||||
@ -1041,7 +1044,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>User/module</GroupName>
|
<GroupName>User/module</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@ -1073,7 +1076,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>User/task</GroupName>
|
<GroupName>User/task</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
@ -29,9 +29,15 @@ r1上层
|
|||||||
+ 👆 传球档 👆 配合档
|
+ 👆 传球档 👆 配合档
|
||||||
+ 中 初始档 中 初始档
|
+ 中 初始档 中 初始档
|
||||||
+ 👇 发射档 👇 运球档
|
+ 👇 发射档 👇 运球档
|
||||||
+ 起步遥控档我直接蓄力准备接球
|
+ 起步遥控档我直接蓄力准备接球 + 可多次的运球
|
||||||
+ 可多次的运球
|
|
||||||
+ 缩回转移球
|
+ 缩回转移球
|
||||||
+ 蓄力到位,收到掉落信号和已伸出信号
|
+ 蓄力到位,收到掉落信号和已伸出信号
|
||||||
+ 根据视觉拟合信息的动态调整
|
+ 根据视觉拟合信息的动态调整
|
||||||
+ 拨置👇发射清空掉落信号
|
+ 拨置👇发射清空掉落信号
|
||||||
|
|
||||||
|
+ 用一个攻守方档
|
||||||
|
+ 攻方时拨下立马蓄力并伸出(可小角度)
|
||||||
|
+ 守方时不动并保持缩回
|
||||||
|
+ 👇 运球档正常运球
|
||||||
|
+ 中 初始档直接缩回
|
||||||
|
+ 👆 配合档 完成配合并伸出才能发射
|
||||||
|
96
R1.ioc
96
R1.ioc
@ -144,36 +144,29 @@ Mcu.Pin14=PD1
|
|||||||
Mcu.Pin15=PA9
|
Mcu.Pin15=PA9
|
||||||
Mcu.Pin16=PH0-OSC_IN
|
Mcu.Pin16=PH0-OSC_IN
|
||||||
Mcu.Pin17=PH1-OSC_OUT
|
Mcu.Pin17=PH1-OSC_OUT
|
||||||
Mcu.Pin18=PC6
|
Mcu.Pin18=PF6
|
||||||
Mcu.Pin19=PF6
|
Mcu.Pin19=PH12
|
||||||
Mcu.Pin2=PB4
|
Mcu.Pin2=PB4
|
||||||
Mcu.Pin20=PH12
|
Mcu.Pin20=PH11
|
||||||
Mcu.Pin21=PH11
|
Mcu.Pin21=PH10
|
||||||
Mcu.Pin22=PH10
|
Mcu.Pin22=PD14
|
||||||
Mcu.Pin23=PD14
|
Mcu.Pin23=PA0-WKUP
|
||||||
Mcu.Pin24=PA0-WKUP
|
Mcu.Pin24=PE13
|
||||||
Mcu.Pin25=PA4
|
Mcu.Pin25=PE11
|
||||||
Mcu.Pin26=PC4
|
Mcu.Pin26=PA7
|
||||||
Mcu.Pin27=PE13
|
Mcu.Pin27=VP_CRC_VS_CRC
|
||||||
Mcu.Pin28=PC5
|
Mcu.Pin28=VP_FREERTOS_VS_CMSIS_V2
|
||||||
Mcu.Pin29=PE9
|
Mcu.Pin29=VP_SYS_VS_Systick
|
||||||
Mcu.Pin3=PB3
|
Mcu.Pin3=PB3
|
||||||
Mcu.Pin30=PE11
|
Mcu.Pin30=VP_TIM4_VS_ClockSourceINT
|
||||||
Mcu.Pin31=PE14
|
Mcu.Pin31=VP_TIM10_VS_ClockSourceINT
|
||||||
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.Pin4=PA14
|
Mcu.Pin4=PA14
|
||||||
Mcu.Pin5=PA13
|
Mcu.Pin5=PA13
|
||||||
Mcu.Pin6=PB7
|
Mcu.Pin6=PB7
|
||||||
Mcu.Pin7=PB6
|
Mcu.Pin7=PB6
|
||||||
Mcu.Pin8=PD0
|
Mcu.Pin8=PD0
|
||||||
Mcu.Pin9=PC11
|
Mcu.Pin9=PC11
|
||||||
Mcu.PinsNb=39
|
Mcu.PinsNb=32
|
||||||
Mcu.ThirdPartyNb=0
|
Mcu.ThirdPartyNb=0
|
||||||
Mcu.UserConstants=
|
Mcu.UserConstants=
|
||||||
Mcu.UserName=STM32F407IGHx
|
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.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.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.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.EXTI9_5_IRQn=true\:5\:0\:true\:false\:true\:false\:true\:true\:true
|
||||||
NVIC.ForceEnableDMAVector=true
|
NVIC.ForceEnableDMAVector=true
|
||||||
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
|
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
|
PA13.Signal=SYS_JTMS-SWDIO
|
||||||
PA14.Mode=Serial_Wire
|
PA14.Mode=Serial_Wire
|
||||||
PA14.Signal=SYS_JTCK-SWCLK
|
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.GPIOParameters=GPIO_PuPd
|
||||||
PA7.GPIO_PuPd=GPIO_PULLUP
|
PA7.GPIO_PuPd=GPIO_PULLUP
|
||||||
PA7.Mode=Full_Duplex_Master
|
PA7.Mode=Full_Duplex_Master
|
||||||
@ -233,13 +218,6 @@ PA7.Signal=SPI1_MOSI
|
|||||||
PA9.Locked=true
|
PA9.Locked=true
|
||||||
PA9.Mode=Asynchronous
|
PA9.Mode=Asynchronous
|
||||||
PA9.Signal=USART1_TX
|
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.GPIOParameters=GPIO_PuPd
|
||||||
PB3.GPIO_PuPd=GPIO_PULLUP
|
PB3.GPIO_PuPd=GPIO_PULLUP
|
||||||
PB3.Mode=Full_Duplex_Master
|
PB3.Mode=Full_Duplex_Master
|
||||||
@ -258,20 +236,6 @@ PC10.Mode=Asynchronous
|
|||||||
PC10.Signal=USART3_TX
|
PC10.Signal=USART3_TX
|
||||||
PC11.Mode=Asynchronous
|
PC11.Mode=Asynchronous
|
||||||
PC11.Signal=USART3_RX
|
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.Locked=true
|
||||||
PD0.Mode=CAN_Activate
|
PD0.Mode=CAN_Activate
|
||||||
PD0.Signal=CAN1_RX
|
PD0.Signal=CAN1_RX
|
||||||
@ -283,25 +247,13 @@ PD14.GPIO_Label=Buzzer
|
|||||||
PD14.Locked=true
|
PD14.Locked=true
|
||||||
PD14.Signal=S_TIM4_CH3
|
PD14.Signal=S_TIM4_CH3
|
||||||
PE11.GPIOParameters=GPIO_Label
|
PE11.GPIOParameters=GPIO_Label
|
||||||
PE11.GPIO_Label=CLOSE
|
PE11.GPIO_Label=DOWN
|
||||||
PE11.Locked=true
|
PE11.Locked=true
|
||||||
PE11.Signal=GPIO_Output
|
PE11.Signal=GPIO_Output
|
||||||
PE13.GPIOParameters=GPIO_Label
|
PE13.GPIOParameters=GPIO_Label
|
||||||
PE13.GPIO_Label=PAW
|
PE13.GPIO_Label=CLOSE
|
||||||
PE13.Locked=true
|
PE13.Locked=true
|
||||||
PE13.Signal=GPIO_Output
|
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.GPIOParameters=GPIO_Speed,GPIO_Label
|
||||||
PF6.GPIO_Label=IMU_HEAT_PWM
|
PF6.GPIO_Label=IMU_HEAT_PWM
|
||||||
PF6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
PF6.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
|
||||||
@ -341,9 +293,10 @@ PI6.GPIO_Label=up-ball
|
|||||||
PI6.GPIO_PuPd=GPIO_PULLDOWN
|
PI6.GPIO_PuPd=GPIO_PULLDOWN
|
||||||
PI6.Locked=true
|
PI6.Locked=true
|
||||||
PI6.Signal=GPIO_Input
|
PI6.Signal=GPIO_Input
|
||||||
PI7.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
|
PI7.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
||||||
PI7.GPIO_Label=ext-up
|
PI7.GPIO_Label=BALL
|
||||||
PI7.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING_FALLING
|
PI7.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_RISING
|
||||||
|
PI7.GPIO_PuPd=GPIO_PULLUP
|
||||||
PI7.Locked=true
|
PI7.Locked=true
|
||||||
PI7.Signal=GPXTI7
|
PI7.Signal=GPXTI7
|
||||||
PinOutPanel.CurrentBGAView=Top
|
PinOutPanel.CurrentBGAView=Top
|
||||||
@ -416,19 +369,12 @@ RCC.VCOOutputFreq_Value=336000000
|
|||||||
RCC.VcooutputI2S=192000000
|
RCC.VcooutputI2S=192000000
|
||||||
SH.GPXTI0.0=GPIO_EXTI0
|
SH.GPXTI0.0=GPIO_EXTI0
|
||||||
SH.GPXTI0.ConfNb=1
|
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.0=GPIO_EXTI7
|
||||||
SH.GPXTI7.ConfNb=1
|
SH.GPXTI7.ConfNb=1
|
||||||
SH.S_TIM10_CH1.0=TIM10_CH1,PWM Generation1 CH1
|
SH.S_TIM10_CH1.0=TIM10_CH1,PWM Generation1 CH1
|
||||||
SH.S_TIM10_CH1.ConfNb=1
|
SH.S_TIM10_CH1.ConfNb=1
|
||||||
SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3
|
SH.S_TIM4_CH3.0=TIM4_CH3,PWM Generation3 CH3
|
||||||
SH.S_TIM4_CH3.ConfNb=1
|
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.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16
|
||||||
SPI1.CLKPhase=SPI_PHASE_2EDGE
|
SPI1.CLKPhase=SPI_PHASE_2EDGE
|
||||||
SPI1.CLKPolarity=SPI_POLARITY_HIGH
|
SPI1.CLKPolarity=SPI_POLARITY_HIGH
|
||||||
|
@ -17,6 +17,10 @@
|
|||||||
|
|
||||||
|
|
||||||
#define ONE_CONTROL 1
|
#define ONE_CONTROL 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//是否使用大疆DT7遥控器
|
//是否使用大疆DT7遥控器
|
||||||
#ifndef DT7
|
#ifndef DT7
|
||||||
#define DT7 0
|
#define DT7 0
|
||||||
@ -33,9 +37,10 @@
|
|||||||
//运球
|
//运球
|
||||||
#define BALL_DOWN (1<<1)
|
#define BALL_DOWN (1<<1)
|
||||||
|
|
||||||
//运球结束
|
//可以蓄力标志
|
||||||
//#define PREPARE (1<<0)
|
#define READY_TELL (1<<0)
|
||||||
|
//运球完成
|
||||||
|
#define HANDING_FINISH (1<<2)
|
||||||
//伸缩结束
|
//伸缩结束
|
||||||
#define EXTEND_OK (1<<3)
|
#define EXTEND_OK (1<<3)
|
||||||
|
|
||||||
|
@ -34,13 +34,6 @@ int8_t BSP_GPIO_RegisterCallback(uint16_t pin, void (*callback)(void)) {
|
|||||||
|
|
||||||
int8_t BSP_GPIO_EnableIRQ(uint16_t pin) {
|
int8_t BSP_GPIO_EnableIRQ(uint16_t pin) {
|
||||||
switch (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:
|
// case USER_KEY_Pin:
|
||||||
// HAL_NVIC_EnableIRQ(USER_KEY_EXTI_IRQn);
|
// 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) {
|
int8_t BSP_GPIO_DisableIRQ(uint16_t pin) {
|
||||||
switch (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:
|
// case USER_KEY_Pin:
|
||||||
// HAL_NVIC_DisableIRQ(USER_KEY_EXTI_IRQn);
|
// HAL_NVIC_DisableIRQ(USER_KEY_EXTI_IRQn);
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include "gpio_it.h" // 确保包含 GPIO 中断相关头文件
|
#include "gpio_it.h" // 确保包含 GPIO 中断相关头文件
|
||||||
#include "bsp_delay.h"
|
#include "bsp_delay.h"
|
||||||
int key=0;
|
int key=0;
|
||||||
|
int ball_exit=0;
|
||||||
|
|
||||||
// 按键中断回调函数
|
// 按键中断回调函数
|
||||||
void detect_exit(void)
|
void detect_exit(void)
|
||||||
@ -11,11 +12,11 @@ void detect_exit(void)
|
|||||||
key++; // 按键按下时变量自增
|
key++; // 按键按下时变量自增
|
||||||
__HAL_GPIO_EXTI_CLEAR_IT(KEY_Pin); // 清除中断标志位
|
__HAL_GPIO_EXTI_CLEAR_IT(KEY_Pin); // 清除中断标志位
|
||||||
}
|
}
|
||||||
void detect_led(void)
|
void detect_ball(void)
|
||||||
{
|
{
|
||||||
delay_ms(10); // 延时10ms
|
|
||||||
key++; // 按键按下时变量自增
|
ball_exit++; // 按键按下时变量自增
|
||||||
__HAL_GPIO_EXTI_CLEAR_IT(ext_up_Pin); // 清除中断标志位
|
__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(KEY_Pin, detect_exit);
|
||||||
// BSP_GPIO_RegisterCallback(ext_up_Pin, detect_led);
|
BSP_GPIO_RegisterCallback(BALL_Pin, detect_ball);
|
||||||
// 注册按键中断回调函数
|
|
||||||
if (BSP_GPIO_RegisterCallback(KEY_Pin, detect_exit) != BSP_OK) {
|
|
||||||
// 错误处理
|
|
||||||
}
|
|
||||||
|
|
||||||
// 启用按键中断
|
// 启用按键中断
|
||||||
if (BSP_GPIO_EnableIRQ(KEY_Pin) != BSP_OK) {
|
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) {
|
||||||
// 错误处理
|
// 错误处理
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,10 +7,12 @@
|
|||||||
#include "shoot.hpp"
|
#include "shoot.hpp"
|
||||||
|
|
||||||
extern RC_ctrl_t rc_ctrl;
|
extern RC_ctrl_t rc_ctrl;
|
||||||
|
extern int ball_exit;
|
||||||
|
|
||||||
//伸缩
|
//伸缩
|
||||||
#define I_ANGLE 147
|
#define I_ANGLE 147
|
||||||
#define O_ANGLE 187
|
#define O_ANGLE 187
|
||||||
|
#define WAIT_POS 165
|
||||||
|
|
||||||
//PE11 气缸
|
//PE11 气缸
|
||||||
|
|
||||||
@ -26,7 +28,7 @@ Ball ::Ball()
|
|||||||
xiaomi.speed = 25; //
|
xiaomi.speed = 25; //
|
||||||
xiaomi.K_P = 80; // 位置增益
|
xiaomi.K_P = 80; // 位置增益
|
||||||
xiaomi.K_D =20; // 位置阻尼
|
xiaomi.K_D =20; // 位置阻尼
|
||||||
xiaomi.K_C = 50 ; // 力矩
|
xiaomi.K_C = 12 ; // 力矩
|
||||||
xiaomi.Pmax =1; //好像没啥用
|
xiaomi.Pmax =1; //好像没啥用
|
||||||
|
|
||||||
// //小米电机初始化
|
// //小米电机初始化
|
||||||
@ -71,6 +73,14 @@ void Ball::rc_mode()
|
|||||||
extern_key=OUT;
|
extern_key=OUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(rc_ctrl.sw[5]==1800)
|
||||||
|
{
|
||||||
|
ready_key=SIDE;
|
||||||
|
}
|
||||||
|
if(rc_ctrl.sw[5]==200)
|
||||||
|
{
|
||||||
|
ready_key=0; //默认不准备
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ball::Send_control()
|
void Ball::Send_control()
|
||||||
@ -86,7 +96,7 @@ void Ball::Send_control()
|
|||||||
void Ball::ballDown(void)
|
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); // 确保下气缸关闭
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -111,7 +121,7 @@ void Ball::ball_control()
|
|||||||
|
|
||||||
switch (rc_key){
|
switch (rc_key){
|
||||||
case MIDDLE2:
|
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); // 确保下气缸关闭
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
||||||
if (currentState1 == BALL_FINISH)
|
if (currentState1 == BALL_FINISH)
|
||||||
{
|
{
|
||||||
@ -128,6 +138,7 @@ void Ball::ball_control()
|
|||||||
|
|
||||||
case DOWN2:
|
case DOWN2:
|
||||||
ballHadling();
|
ballHadling();
|
||||||
|
//test_Handling();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -137,28 +148,28 @@ void Ball::ball_control()
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ball_state = 0;
|
int ball_state = 0;
|
||||||
int triggerCount = 0; // 光电传感器触发计数
|
int last_ball_state = 0; // 上一次的光电状态
|
||||||
int last_ball_state = 1; // 上一次的光电状态
|
|
||||||
//(有球 0,无球 1)
|
|
||||||
void Ball::ballHadling(void)
|
void Ball::ballHadling(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch (currentState1)
|
switch (currentState1)
|
||||||
{
|
{
|
||||||
case BALL_IDLE:
|
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); // 确保下气缸关闭
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
||||||
if (rc_key == DOWN2) // 检测按键是否被按下
|
if (rc_key == DOWN2) // 检测按键是否被按下
|
||||||
{
|
{
|
||||||
|
|
||||||
triggerCount = 0; // 重置触发计数
|
|
||||||
currentState1 = BALL_FORWARD;
|
currentState1 = BALL_FORWARD;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BALL_FORWARD:
|
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);
|
osDelay(5);
|
||||||
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_SET); // 打开下气缸
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_SET); // 打开下气缸
|
||||||
currentState1 = BALL_DROP; // 切换到球下落状态
|
currentState1 = BALL_DROP; // 切换到球下落状态
|
||||||
@ -167,44 +178,36 @@ void Ball::ballHadling(void)
|
|||||||
case BALL_DROP:
|
case BALL_DROP:
|
||||||
osDelay(100); // 延时 100ms
|
osDelay(100); // 延时 100ms
|
||||||
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 关闭下气缸
|
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); // 延时去抖动
|
currentState1 = BALL_FLAG;
|
||||||
triggerCount++; // 增加触发计数
|
|
||||||
if (triggerCount == 1) // 第一次触发
|
|
||||||
{
|
|
||||||
currentState1 = BALL_FLAG; // 切换到等待第二次触发状态
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
last_ball_state = ball_state; // 更新上一次的状态
|
last_ball_state = ball_state;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BALL_FLAG:
|
case BALL_FLAG:
|
||||||
osDelay(10); // 延时 50ms
|
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;
|
break;
|
||||||
|
|
||||||
case BALL_CLOSE:
|
case BALL_CLOSE:
|
||||||
if (triggerCount == 2) // 确保是第二次触发
|
|
||||||
{
|
osDelay(25);
|
||||||
osDelay(50);
|
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 闭合气缸爪子
|
||||||
HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 闭合气缸爪子
|
|
||||||
currentState1 = BALL_FINISH; // 切换到反转状态
|
currentState1 = BALL_FINISH; // 切换到反转状态
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BALL_FINISH:
|
case BALL_FINISH:
|
||||||
osDelay(50); // 延时 50ms
|
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); // 确保下气缸关闭
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
||||||
|
|
||||||
triggerCount = 0; // 重置触发计数
|
|
||||||
|
|
||||||
//currentState1 = BALL_IDLE; // 回到空闲状态
|
//currentState1 = BALL_IDLE; // 回到空闲状态
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -215,7 +218,10 @@ void Ball::ballHadling(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if ONE_CONTROL
|
#if ONE_CONTROL
|
||||||
@ -225,7 +231,10 @@ void Ball::ball_control()
|
|||||||
hand_thread = osThreadFlagsGet(); // 获取任务通知标志位
|
hand_thread = osThreadFlagsGet(); // 获取任务通知标志位
|
||||||
ball_state = HAL_GPIO_ReadPin(up_ball_GPIO_Port, up_ball_Pin); // 读取光电状态(有球 1,无球 0)
|
ball_state = HAL_GPIO_ReadPin(up_ball_GPIO_Port, up_ball_Pin); // 读取光电状态(有球 1,无球 0)
|
||||||
|
|
||||||
switch (rc_key){
|
//进攻
|
||||||
|
if(ready_key==SIDE)
|
||||||
|
{
|
||||||
|
switch (rc_key){
|
||||||
case MIDDLE2:
|
case MIDDLE2:
|
||||||
Idle_control();
|
Idle_control();
|
||||||
break;
|
break;
|
||||||
@ -239,6 +248,17 @@ void Ball::ball_control()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
//防守
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xiaomi.position = I_ANGLE; // 保持收回
|
||||||
|
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 确保爪气缸关闭
|
||||||
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Send_control();
|
Send_control();
|
||||||
|
|
||||||
@ -260,10 +280,10 @@ void Ball::ballDown(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case EXTEND_DOWN:
|
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);
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET);
|
||||||
// 检测到球自由下落一次就切换状态
|
// 检测到球自由下落一次就切换状态
|
||||||
if(ball_state == 0)
|
if(ball_state == 1)
|
||||||
{
|
{
|
||||||
currentState1 = EXTEND_OUT;
|
currentState1 = EXTEND_OUT;
|
||||||
}
|
}
|
||||||
@ -291,12 +311,25 @@ void Ball::ballDown(void)
|
|||||||
|
|
||||||
void Ball::Idle_control()
|
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); // 确保下气缸关闭
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
||||||
|
|
||||||
osThreadFlagsClear(PREPARE);
|
|
||||||
osThreadFlagsClear(EXTEND_OK);
|
osThreadFlagsClear(EXTEND_OK);
|
||||||
|
|
||||||
|
if(ready_key==SIDE) // 检测是否准备好
|
||||||
|
{
|
||||||
|
xiaomi.position = WAIT_POS;
|
||||||
|
if(feedback->position_deg >= WAIT_POS-3)
|
||||||
|
{
|
||||||
|
osThreadFlagsSet(task_struct.thread.shoot, READY_TELL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xiaomi.position = I_ANGLE; // 默认回到收回位置
|
||||||
|
}
|
||||||
|
|
||||||
// 拨杆回到中间挡位时,回位并重置状态机
|
// 拨杆回到中间挡位时,回位并重置状态机
|
||||||
if(currentState1==EXTEND_FINISH)//转移后
|
if(currentState1==EXTEND_FINISH)//转移后
|
||||||
{
|
{
|
||||||
@ -317,21 +350,17 @@ void Ball::Idle_control()
|
|||||||
}
|
}
|
||||||
|
|
||||||
int ball_state = 0;
|
int ball_state = 0;
|
||||||
int triggerCount = 0; // 光电传感器触发计数
|
int last_ball_state = 0; // 上一次的光电状态
|
||||||
int last_ball_state = 1; // 上一次的光电状态
|
|
||||||
//(有球 0,无球 1)
|
|
||||||
void Ball::ballHadling(void)
|
void Ball::ballHadling(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch (currentState1)
|
switch (currentState1)
|
||||||
{
|
{
|
||||||
case BALL_IDLE:
|
case BALL_IDLE:
|
||||||
HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); //确保爪气缸关闭
|
|
||||||
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
|
||||||
if (rc_key == DOWN2)
|
if (rc_key == DOWN2)
|
||||||
{
|
{
|
||||||
xiaomi.position = O_ANGLE;//外伸
|
xiaomi.position = O_ANGLE;//外伸
|
||||||
triggerCount = 0; // 重置触发计数
|
|
||||||
if(feedback->position_deg>= O_ANGLE-1)// 确保伸缩电机到位
|
if(feedback->position_deg>= O_ANGLE-1)// 确保伸缩电机到位
|
||||||
{
|
{
|
||||||
currentState1 = BALL_FORWARD;
|
currentState1 = BALL_FORWARD;
|
||||||
@ -341,7 +370,7 @@ void Ball::ballHadling(void)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case BALL_FORWARD:
|
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);
|
osDelay(5);
|
||||||
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_SET); // 打开下气缸
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_SET); // 打开下气缸
|
||||||
currentState1 = BALL_DROP; // 切换到球下落状态
|
currentState1 = BALL_DROP; // 切换到球下落状态
|
||||||
@ -350,43 +379,36 @@ void Ball::ballHadling(void)
|
|||||||
case BALL_DROP:
|
case BALL_DROP:
|
||||||
osDelay(100); // 延时 100ms
|
osDelay(100); // 延时 100ms
|
||||||
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 关闭下气缸
|
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++; // 增加触发计数
|
currentState1 = BALL_FLAG;
|
||||||
if (triggerCount == 1) // 第一次触发
|
|
||||||
{
|
|
||||||
currentState1 = BALL_FLAG; // 切换到等待第二次触发状态
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
last_ball_state = ball_state; // 更新上一次的状态
|
last_ball_state = ball_state;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BALL_FLAG:
|
case BALL_FLAG:
|
||||||
// osDelay(10); // 延时 50ms
|
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;
|
break;
|
||||||
|
|
||||||
case BALL_CLOSE:
|
case BALL_CLOSE:
|
||||||
if (triggerCount == 2) // 确保是第二次触发
|
|
||||||
{
|
osDelay(25);
|
||||||
osDelay(50);
|
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 闭合气缸爪子
|
||||||
HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 闭合气缸爪子
|
|
||||||
currentState1 = BALL_FINISH; // 切换到反转状态
|
currentState1 = BALL_FINISH; // 切换到反转状态
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BALL_FINISH:
|
case BALL_FINISH:
|
||||||
osDelay(50); // 延时 50ms
|
osDelay(50); // 延时 50ms
|
||||||
HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 确保气缸爪子闭合
|
//osThreadFlagsSet(task_struct.thread.ball, HANDING_FINISH);
|
||||||
|
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 确保气缸爪子闭合
|
||||||
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
||||||
|
|
||||||
triggerCount = 0; // 重置触发计数
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -395,7 +417,8 @@ void Ball::ballHadling(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -31,14 +31,6 @@ typedef enum {
|
|||||||
|
|
||||||
} BallState_t;
|
} BallState_t;
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
MOTOR_1 = 0,
|
|
||||||
MOTOR_2 = 1,
|
|
||||||
MOTOR_3 = 2,
|
|
||||||
MOTOR_DOWN = 3,
|
|
||||||
MOTOR_NUM
|
|
||||||
}motorhangd_e;
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
@ -46,7 +38,8 @@ typedef enum
|
|||||||
MIDDLE2,
|
MIDDLE2,
|
||||||
DOWN2,
|
DOWN2,
|
||||||
IN,
|
IN,
|
||||||
OUT
|
OUT,
|
||||||
|
SIDE
|
||||||
}ball_rc_mode;
|
}ball_rc_mode;
|
||||||
|
|
||||||
// 定义光电传感器检测宏
|
// 定义光电传感器检测宏
|
||||||
@ -62,7 +55,7 @@ public:
|
|||||||
void Move_Extend(void);
|
void Move_Extend(void);
|
||||||
void Idle_control(void);
|
void Idle_control(void);
|
||||||
void rc_mode(void);
|
void rc_mode(void);
|
||||||
void Extend_mcontrol(int angle1,int angle2);
|
void test_Handling(void);
|
||||||
void ball_control(void);
|
void ball_control(void);
|
||||||
|
|
||||||
BallState_t currentState1; // 运球任务状态机
|
BallState_t currentState1; // 运球任务状态机
|
||||||
@ -78,6 +71,7 @@ public:
|
|||||||
//==========================公共变量==========================//
|
//==========================公共变量==========================//
|
||||||
int16_t rc_key; //遥控器按键
|
int16_t rc_key; //遥控器按键
|
||||||
int16_t extern_key;
|
int16_t extern_key;
|
||||||
|
int16_t ready_key; //准备按键
|
||||||
//用于传接球,运球后通知
|
//用于传接球,运球后通知
|
||||||
volatile BallState_t ballStatus;//是否有球
|
volatile BallState_t ballStatus;//是否有球
|
||||||
volatile uint32_t hand_thread;//接收传回的线程通知
|
volatile uint32_t hand_thread;//接收传回的线程通知
|
||||||
|
@ -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
|
// E键 sw[1] 👆 200 shoot 中 1000 stop sw[2]200 sw[2]👇1800
|
||||||
// G键 sw[6]👆 1800 中 1000 👇200
|
// G键 sw[6]👆 1800 中 1000 👇200
|
||||||
// B键 sw[3]👆 200 开 中 1000 👇1800 关
|
// B键 sw[3]👆 200 开 中 1000 👇1800 关
|
||||||
|
// sw[5] 👆 200 👇1800
|
||||||
//左旋 sw[7] 200 --1800
|
//左旋 sw[7] 200 --1800
|
||||||
void Shoot::rc_mode()
|
void Shoot::rc_mode()
|
||||||
{
|
{
|
||||||
@ -149,24 +150,18 @@ void Shoot::rc_mode()
|
|||||||
{
|
{
|
||||||
mode_key=VSION;
|
mode_key=VSION;
|
||||||
}
|
}
|
||||||
if(rc_ctrl.sw[3]==1800)
|
// if(rc_ctrl.sw[5]==200)
|
||||||
{
|
|
||||||
ready_key=PREPARE;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
ready_key=0; //默认不准备
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// if(rc_ctrl.sw[7]==200)
|
|
||||||
// {
|
// {
|
||||||
// trigger_key=WAIT;
|
// mode_key=OUT;
|
||||||
// }
|
|
||||||
// if(rc_ctrl.sw[7]==1800)
|
|
||||||
// {
|
|
||||||
// trigger_key=SHOOT;
|
|
||||||
// }
|
// }
|
||||||
|
if(rc_ctrl.sw[5]==1800)
|
||||||
|
{
|
||||||
|
ready_key=OFFENSIVE;
|
||||||
|
}
|
||||||
|
else if(rc_ctrl.sw[5]==200)
|
||||||
|
{
|
||||||
|
ready_key=DEFENSE;
|
||||||
|
}
|
||||||
|
|
||||||
// //旋钮增量
|
// //旋钮增量
|
||||||
// static int last_knob_value = 0; // 记录旋钮的上一次值
|
// static int last_knob_value = 0; // 记录旋钮的上一次值
|
||||||
@ -375,6 +370,7 @@ feedback.fd_tpos = trigger_Motor->total_angle;
|
|||||||
|
|
||||||
shoot_thread = osThreadFlagsGet(); // 获取任务通知标志位
|
shoot_thread = osThreadFlagsGet(); // 获取任务通知标志位
|
||||||
|
|
||||||
|
if(ready_key==OFFENSIVE){
|
||||||
switch (mode_key)
|
switch (mode_key)
|
||||||
{
|
{
|
||||||
case VSION:
|
case VSION:
|
||||||
@ -429,9 +425,15 @@ break;
|
|||||||
BSP_Buzzer_Set(1,5000);
|
BSP_Buzzer_Set(1,5000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(shoot_thread & READY_TELL) // 如果收到等待配合的通知
|
||||||
|
{
|
||||||
|
ball_receive(); // 执行接收球的操作
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ball_receive(); // 执行接收球的操作
|
go1.Pos = TOP_POS-3.0f; //-208
|
||||||
|
limit_speed=TO_TOP;//快速上去
|
||||||
|
t_posSet = Tigger_ZERO; // 扳机松开
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -460,6 +462,14 @@ break;
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(ready_key==DEFENSE)//攻守档总控
|
||||||
|
{
|
||||||
|
go1.Pos = TOP_POS-3.0f; //-208
|
||||||
|
limit_speed=TO_TOP;//快速上去
|
||||||
|
t_posSet = Tigger_ZERO; // 扳机松开
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
abs_limit_min_max_fp(&go1.Pos ,-210.0f,2.0f);
|
abs_limit_min_max_fp(&go1.Pos ,-210.0f,2.0f);
|
||||||
// 发送数据到蓄力电机
|
// 发送数据到蓄力电机
|
||||||
@ -475,18 +485,16 @@ void Shoot ::ball_receive()
|
|||||||
switch (currentState)
|
switch (currentState)
|
||||||
{
|
{
|
||||||
case SHOOT_IDLE:
|
case SHOOT_IDLE:
|
||||||
//底盘手动档直接蓄力
|
|
||||||
if(ready_key == PREPARE){
|
|
||||||
// 初始状态:钩子移动到顶部,钩住拉簧
|
// 初始状态:钩子移动到顶部,钩住拉簧
|
||||||
control_pos = TOP_POS;
|
control_pos = TOP_POS;
|
||||||
limit_speed=TO_TOP;//快速上去
|
limit_speed=TO_TOP;//快速上去
|
||||||
t_posSet = Tigger_ZERO;
|
t_posSet = Tigger_ZERO;
|
||||||
if(feedback.fd_gopos >= TOP_POS - 0.5f && feedback.fd_gopos <= TOP_POS + 0.5f)
|
if(feedback.fd_gopos <-209)
|
||||||
{
|
{
|
||||||
currentState = GO_TOP; // 切换到准备发射状态
|
currentState = GO_TOP; // 切换到准备发射状态
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GO_TOP:
|
case GO_TOP:
|
||||||
t_posSet = Tigger_DO;
|
t_posSet = Tigger_DO;
|
||||||
if (trigger_Motor->total_angle<Tigger_DO+1.0f && trigger_Motor->total_angle>Tigger_DO-1.0f)
|
if (trigger_Motor->total_angle<Tigger_DO+1.0f && trigger_Motor->total_angle>Tigger_DO-1.0f)
|
||||||
@ -501,7 +509,7 @@ void Shoot ::ball_receive()
|
|||||||
if(feedback.fd_gopos >= BOTTOM_POS - 1.0f && feedback.fd_gopos <= BOTTOM_POS + 1.0f)
|
if(feedback.fd_gopos >= BOTTOM_POS - 1.0f && feedback.fd_gopos <= BOTTOM_POS + 1.0f)
|
||||||
{
|
{
|
||||||
|
|
||||||
//osThreadFlagsClear(PREPARE); // 清除任务通知标志位
|
osThreadFlagsClear(READY_TELL); // 清除任务通知标志位
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -519,14 +527,14 @@ void Shoot::RemoveError() {
|
|||||||
t_posSet = Tigger_ZERO;
|
t_posSet = Tigger_ZERO;
|
||||||
is_hooked = false;
|
is_hooked = false;
|
||||||
}
|
}
|
||||||
if(trigger_Motor->total_angle>=Tigger_ZERO-10)
|
if(trigger_Motor->total_angle>=Tigger_ZERO-5)
|
||||||
{
|
{
|
||||||
//认为完全松开
|
//认为完全松开
|
||||||
control_pos=INIT_POS;
|
control_pos=INIT_POS;
|
||||||
BSP_Buzzer_Stop();
|
BSP_Buzzer_Stop();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
limit_speed=3.0f;//慢慢送上去
|
||||||
go1.Pos = control_pos;
|
go1.Pos = control_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,8 @@ typedef enum
|
|||||||
WAIT,
|
WAIT,
|
||||||
TEST,
|
TEST,
|
||||||
VSION,
|
VSION,
|
||||||
PREPARE
|
OFFENSIVE,
|
||||||
|
DEFENSE
|
||||||
}rc_mode;
|
}rc_mode;
|
||||||
|
|
||||||
// 光电传感器读取宏
|
// 光电传感器读取宏
|
||||||
|
@ -35,9 +35,12 @@ void FunctionBall(void *argument)
|
|||||||
|
|
||||||
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(); // 遥控器模式
|
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;
|
// ball.xiaomi.position = aaaa;
|
||||||
// CAN_XiaoMi(1,&ball.xiaomi,&hcan2);
|
// CAN_XiaoMi(1,&ball.xiaomi,&hcan2);
|
||||||
|
Loading…
Reference in New Issue
Block a user