自瞄加完,发射拨弹不行

This commit is contained in:
yunhai8432 2026-01-09 14:27:42 +08:00
parent 23db044e59
commit 6019116451
30 changed files with 7366 additions and 7268 deletions

View File

@ -60,15 +60,14 @@ void DMA1_Stream1_IRQHandler(void);
void CAN1_TX_IRQHandler(void); void CAN1_TX_IRQHandler(void);
void CAN1_RX0_IRQHandler(void); void CAN1_RX0_IRQHandler(void);
void CAN1_RX1_IRQHandler(void); void CAN1_RX1_IRQHandler(void);
void CAN1_SCE_IRQHandler(void);
void EXTI9_5_IRQHandler(void); void EXTI9_5_IRQHandler(void);
void USART1_IRQHandler(void); void USART1_IRQHandler(void);
void USART2_IRQHandler(void); void USART2_IRQHandler(void);
void DMA2_Stream2_IRQHandler(void); void DMA2_Stream2_IRQHandler(void);
void DMA2_Stream3_IRQHandler(void); void DMA2_Stream3_IRQHandler(void);
void CAN2_TX_IRQHandler(void); void CAN2_TX_IRQHandler(void);
void CAN2_RX0_IRQHandler(void);
void CAN2_RX1_IRQHandler(void); void CAN2_RX1_IRQHandler(void);
void CAN2_SCE_IRQHandler(void);
void USART6_IRQHandler(void); void USART6_IRQHandler(void);
/* USER CODE BEGIN EFP */ /* USER CODE BEGIN EFP */

View File

@ -128,8 +128,6 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn); HAL_NVIC_EnableIRQ(CAN1_RX0_IRQn);
HAL_NVIC_SetPriority(CAN1_RX1_IRQn, 5, 0); HAL_NVIC_SetPriority(CAN1_RX1_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(CAN1_RX1_IRQn); HAL_NVIC_EnableIRQ(CAN1_RX1_IRQn);
HAL_NVIC_SetPriority(CAN1_SCE_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(CAN1_SCE_IRQn);
/* USER CODE BEGIN CAN1_MspInit 1 */ /* USER CODE BEGIN CAN1_MspInit 1 */
/* USER CODE END CAN1_MspInit 1 */ /* USER CODE END CAN1_MspInit 1 */
@ -148,10 +146,10 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
__HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE();
/**CAN2 GPIO Configuration /**CAN2 GPIO Configuration
PB5 ------> CAN2_RX
PB6 ------> CAN2_TX PB6 ------> CAN2_TX
PB12 ------> CAN2_RX
*/ */
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_12; GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
@ -161,10 +159,10 @@ void HAL_CAN_MspInit(CAN_HandleTypeDef* canHandle)
/* CAN2 interrupt Init */ /* CAN2 interrupt Init */
HAL_NVIC_SetPriority(CAN2_TX_IRQn, 5, 0); HAL_NVIC_SetPriority(CAN2_TX_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(CAN2_TX_IRQn); HAL_NVIC_EnableIRQ(CAN2_TX_IRQn);
HAL_NVIC_SetPriority(CAN2_RX0_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(CAN2_RX0_IRQn);
HAL_NVIC_SetPriority(CAN2_RX1_IRQn, 5, 0); HAL_NVIC_SetPriority(CAN2_RX1_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(CAN2_RX1_IRQn); HAL_NVIC_EnableIRQ(CAN2_RX1_IRQn);
HAL_NVIC_SetPriority(CAN2_SCE_IRQn, 5, 0);
HAL_NVIC_EnableIRQ(CAN2_SCE_IRQn);
/* USER CODE BEGIN CAN2_MspInit 1 */ /* USER CODE BEGIN CAN2_MspInit 1 */
/* USER CODE END CAN2_MspInit 1 */ /* USER CODE END CAN2_MspInit 1 */
@ -195,7 +193,6 @@ void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle)
HAL_NVIC_DisableIRQ(CAN1_TX_IRQn); HAL_NVIC_DisableIRQ(CAN1_TX_IRQn);
HAL_NVIC_DisableIRQ(CAN1_RX0_IRQn); HAL_NVIC_DisableIRQ(CAN1_RX0_IRQn);
HAL_NVIC_DisableIRQ(CAN1_RX1_IRQn); HAL_NVIC_DisableIRQ(CAN1_RX1_IRQn);
HAL_NVIC_DisableIRQ(CAN1_SCE_IRQn);
/* USER CODE BEGIN CAN1_MspDeInit 1 */ /* USER CODE BEGIN CAN1_MspDeInit 1 */
/* USER CODE END CAN1_MspDeInit 1 */ /* USER CODE END CAN1_MspDeInit 1 */
@ -213,15 +210,15 @@ void HAL_CAN_MspDeInit(CAN_HandleTypeDef* canHandle)
} }
/**CAN2 GPIO Configuration /**CAN2 GPIO Configuration
PB5 ------> CAN2_RX
PB6 ------> CAN2_TX PB6 ------> CAN2_TX
PB12 ------> CAN2_RX
*/ */
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_12); HAL_GPIO_DeInit(GPIOB, GPIO_PIN_5|GPIO_PIN_6);
/* CAN2 interrupt Deinit */ /* CAN2 interrupt Deinit */
HAL_NVIC_DisableIRQ(CAN2_TX_IRQn); HAL_NVIC_DisableIRQ(CAN2_TX_IRQn);
HAL_NVIC_DisableIRQ(CAN2_RX0_IRQn);
HAL_NVIC_DisableIRQ(CAN2_RX1_IRQn); HAL_NVIC_DisableIRQ(CAN2_RX1_IRQn);
HAL_NVIC_DisableIRQ(CAN2_SCE_IRQn);
/* USER CODE BEGIN CAN2_MspDeInit 1 */ /* USER CODE BEGIN CAN2_MspDeInit 1 */
/* USER CODE END CAN2_MspDeInit 1 */ /* USER CODE END CAN2_MspDeInit 1 */

View File

@ -288,20 +288,6 @@ void CAN1_RX1_IRQHandler(void)
/* USER CODE END CAN1_RX1_IRQn 1 */ /* USER CODE END CAN1_RX1_IRQn 1 */
} }
/**
* @brief This function handles CAN1 SCE interrupt.
*/
void CAN1_SCE_IRQHandler(void)
{
/* USER CODE BEGIN CAN1_SCE_IRQn 0 */
/* USER CODE END CAN1_SCE_IRQn 0 */
HAL_CAN_IRQHandler(&hcan1);
/* USER CODE BEGIN CAN1_SCE_IRQn 1 */
/* USER CODE END CAN1_SCE_IRQn 1 */
}
/** /**
* @brief This function handles EXTI line[9:5] interrupts. * @brief This function handles EXTI line[9:5] interrupts.
*/ */
@ -387,6 +373,20 @@ void CAN2_TX_IRQHandler(void)
/* USER CODE END CAN2_TX_IRQn 1 */ /* USER CODE END CAN2_TX_IRQn 1 */
} }
/**
* @brief This function handles CAN2 RX0 interrupts.
*/
void CAN2_RX0_IRQHandler(void)
{
/* USER CODE BEGIN CAN2_RX0_IRQn 0 */
/* USER CODE END CAN2_RX0_IRQn 0 */
HAL_CAN_IRQHandler(&hcan2);
/* USER CODE BEGIN CAN2_RX0_IRQn 1 */
/* USER CODE END CAN2_RX0_IRQn 1 */
}
/** /**
* @brief This function handles CAN2 RX1 interrupt. * @brief This function handles CAN2 RX1 interrupt.
*/ */
@ -401,20 +401,6 @@ void CAN2_RX1_IRQHandler(void)
/* USER CODE END CAN2_RX1_IRQn 1 */ /* USER CODE END CAN2_RX1_IRQn 1 */
} }
/**
* @brief This function handles CAN2 SCE interrupt.
*/
void CAN2_SCE_IRQHandler(void)
{
/* USER CODE BEGIN CAN2_SCE_IRQn 0 */
/* USER CODE END CAN2_SCE_IRQn 0 */
HAL_CAN_IRQHandler(&hcan2);
/* USER CODE BEGIN CAN2_SCE_IRQn 1 */
/* USER CODE END CAN2_SCE_IRQn 1 */
}
/** /**
* @brief This function handles USART6 global interrupt. * @brief This function handles USART6 global interrupt.
*/ */

View File

@ -79,37 +79,37 @@ Mcu.IPNb=14
Mcu.Name=STM32F407I(E-G)Hx Mcu.Name=STM32F407I(E-G)Hx
Mcu.Package=UFBGA176 Mcu.Package=UFBGA176
Mcu.Pin0=PB8 Mcu.Pin0=PB8
Mcu.Pin1=PG14 Mcu.Pin1=PB5
Mcu.Pin10=PC11 Mcu.Pin10=PD0
Mcu.Pin11=PC10 Mcu.Pin11=PC11
Mcu.Pin12=PG9 Mcu.Pin12=PC10
Mcu.Pin13=PD5 Mcu.Pin13=PG9
Mcu.Pin14=PD1 Mcu.Pin14=PD5
Mcu.Pin15=PF0 Mcu.Pin15=PD1
Mcu.Pin16=PA9 Mcu.Pin16=PF0
Mcu.Pin17=PH0-OSC_IN Mcu.Pin17=PA9
Mcu.Pin18=PH1-OSC_OUT Mcu.Pin18=PH0-OSC_IN
Mcu.Pin19=PF1 Mcu.Pin19=PH1-OSC_OUT
Mcu.Pin2=PB4 Mcu.Pin2=PG14
Mcu.Pin20=PG6 Mcu.Pin20=PF1
Mcu.Pin21=PG3 Mcu.Pin21=PG6
Mcu.Pin22=PA0-WKUP Mcu.Pin22=PG3
Mcu.Pin23=PA4 Mcu.Pin23=PA0-WKUP
Mcu.Pin24=PC4 Mcu.Pin24=PA4
Mcu.Pin25=PC5 Mcu.Pin25=PC4
Mcu.Pin26=PB12 Mcu.Pin26=PC5
Mcu.Pin27=PA7 Mcu.Pin27=PA7
Mcu.Pin28=PB0 Mcu.Pin28=PB0
Mcu.Pin29=VP_FREERTOS_VS_CMSIS_V2 Mcu.Pin29=VP_FREERTOS_VS_CMSIS_V2
Mcu.Pin3=PB3 Mcu.Pin3=PB4
Mcu.Pin30=VP_SYS_VS_Systick Mcu.Pin30=VP_SYS_VS_Systick
Mcu.Pin31=VP_TIM10_VS_ClockSourceINT Mcu.Pin31=VP_TIM10_VS_ClockSourceINT
Mcu.Pin4=PA14 Mcu.Pin4=PB3
Mcu.Pin5=PA13 Mcu.Pin5=PA14
Mcu.Pin6=PB7 Mcu.Pin6=PA13
Mcu.Pin7=PB6 Mcu.Pin7=PB7
Mcu.Pin8=PD6 Mcu.Pin8=PB6
Mcu.Pin9=PD0 Mcu.Pin9=PD6
Mcu.PinsNb=32 Mcu.PinsNb=32
Mcu.ThirdPartyNb=0 Mcu.ThirdPartyNb=0
Mcu.UserConstants= Mcu.UserConstants=
@ -119,10 +119,9 @@ MxDb.Version=DB.6.0.161
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
NVIC.CAN1_RX0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.CAN1_RX0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.CAN1_RX1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.CAN1_RX1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.CAN1_SCE_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.CAN1_TX_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.CAN1_TX_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.CAN2_RX0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.CAN2_RX1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.CAN2_RX1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.CAN2_SCE_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.CAN2_TX_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true NVIC.CAN2_TX_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.DMA1_Stream1_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA1_Stream1_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
NVIC.DMA2_Stream2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true NVIC.DMA2_Stream2_IRQn=true\:5\:0\:false\:false\:true\:true\:false\:true\:true
@ -176,13 +175,13 @@ PB0.GPIO_Speed=GPIO_SPEED_FREQ_MEDIUM
PB0.Locked=true PB0.Locked=true
PB0.PinState=GPIO_PIN_SET PB0.PinState=GPIO_PIN_SET
PB0.Signal=GPIO_Output PB0.Signal=GPIO_Output
PB12.Locked=true
PB12.Mode=CAN_Activate
PB12.Signal=CAN2_RX
PB3.Mode=Full_Duplex_Master PB3.Mode=Full_Duplex_Master
PB3.Signal=SPI1_SCK PB3.Signal=SPI1_SCK
PB4.Mode=Full_Duplex_Master PB4.Mode=Full_Duplex_Master
PB4.Signal=SPI1_MISO PB4.Signal=SPI1_MISO
PB5.Locked=true
PB5.Mode=CAN_Activate
PB5.Signal=CAN2_RX
PB6.Mode=CAN_Activate PB6.Mode=CAN_Activate
PB6.Signal=CAN2_TX PB6.Signal=CAN2_TX
PB7.Mode=Asynchronous PB7.Mode=Asynchronous

View File

@ -5,3 +5,9 @@
[info] project closed: Infantry [info] project closed: Infantry
[info] Log at : 2026/1/8|22:21:24|GMT+0800 [info] Log at : 2026/1/8|22:21:24|GMT+0800
[info] Log at : 2026/1/9|10:16:50|GMT+0800
[info] Log at : 2026/1/9|10:16:54|GMT+0800
[info] Log at : 2026/1/9|10:26:28|GMT+0800

View File

@ -1,4 +1,4 @@
*** Using Compiler 'V6.16', folder: 'D:\Keil_v5\ARM\ARMCLANG\Bin' *** Using Compiler 'V6.16', folder: 'D:\Keil_v5\ARM\ARMCLANG\Bin'
Build target 'Infantry' Build target 'Infantry'
Note: source file '..\User\bsp\can.c' - object file renamed from 'Infantry\can.o' to 'Infantry\can_1.o'.Note: source file '..\User\bsp\gpio.c' - object file renamed from 'Infantry\gpio.o' to 'Infantry\gpio_1.o'.Note: source file '..\User\bsp\i2c.c' - object file renamed from 'Infantry\i2c.o' to 'Infantry\i2c_1.o'.Note: source file '..\User\bsp\spi.c' - object file renamed from 'Infantry\spi.o' to 'Infantry\spi_1.o'.Note: source file '..\User\task\ai.c' - object file renamed from 'Infantry\ai.o' to 'Infantry\ai_1.o'.Note: source file '..\User\task\dr16.c' - object file renamed from 'Infantry\dr16.o' to 'Infantry\dr16_1.o'."Infantry\Infantry.axf" - 0 Error(s), 0 Warning(s). Note: source file '..\User\bsp\can.c' - object file renamed from 'Infantry\can.o' to 'Infantry\can_1.o'.Note: source file '..\User\bsp\gpio.c' - object file renamed from 'Infantry\gpio.o' to 'Infantry\gpio_1.o'.Note: source file '..\User\bsp\i2c.c' - object file renamed from 'Infantry\i2c.o' to 'Infantry\i2c_1.o'.Note: source file '..\User\bsp\spi.c' - object file renamed from 'Infantry\spi.o' to 'Infantry\spi_1.o'.Note: source file '..\User\task\dr16.c' - object file renamed from 'Infantry\dr16.o' to 'Infantry\dr16_1.o'.Note: source file '..\User\task\ai.c' - object file renamed from 'Infantry\ai.o' to 'Infantry\ai_1.o'."Infantry\Infantry.axf" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:02 Build Time Elapsed: 00:00:02

View File

@ -1 +1 @@
2026/1/8 22:21:37 2026/1/9 10:31:55

File diff suppressed because one or more lines are too long

View File

@ -135,7 +135,7 @@
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
<Key>CMSIS_AGDI</Key> <Key>CMSIS_AGDI</Key>
<Name>-X"" -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name> <Name>-X"Any" -UAny -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
</SetRegEntry> </SetRegEntry>
<SetRegEntry> <SetRegEntry>
<Number>0</Number> <Number>0</Number>
@ -195,6 +195,21 @@
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>shoot_cmd</ItemText> <ItemText>shoot_cmd</ItemText>
</Ww> </Ww>
<Ww>
<count>8</count>
<WinNumber>1</WinNumber>
<ItemText>bmi088</ItemText>
</Ww>
<Ww>
<count>9</count>
<WinNumber>1</WinNumber>
<ItemText>shoot_cmd</ItemText>
</Ww>
<Ww>
<count>10</count>
<WinNumber>1</WinNumber>
<ItemText>shoot</ItemText>
</Ww>
</WatchWindow1> </WatchWindow1>
<Tracepoint> <Tracepoint>
<THDelay>0</THDelay> <THDelay>0</THDelay>

Binary file not shown.

View File

@ -33,17 +33,11 @@ Note: source file '..\User\bsp\i2c.c' - object file renamed from 'Infantry\i2c.o
Note: source file '..\User\bsp\spi.c' - object file renamed from 'Infantry\spi.o' to 'Infantry\spi_1.o'. Note: source file '..\User\bsp\spi.c' - object file renamed from 'Infantry\spi.o' to 'Infantry\spi_1.o'.
Note: source file '..\User\task\dr16.c' - object file renamed from 'Infantry\dr16.o' to 'Infantry\dr16_1.o'. Note: source file '..\User\task\dr16.c' - object file renamed from 'Infantry\dr16.o' to 'Infantry\dr16_1.o'.
Note: source file '..\User\task\ai.c' - object file renamed from 'Infantry\ai.o' to 'Infantry\ai_1.o'. Note: source file '..\User\task\ai.c' - object file renamed from 'Infantry\ai.o' to 'Infantry\ai_1.o'.
../User/task/chassis_ctrl.c(7): warning: In file included from... compiling config.c...
../User\task/user_task.h(73): warning: expected ';' at end of declaration list
osMessageQueueId_t dr16/* 发射命令队列 */
^
;
1 warning generated.
compiling chassis_ctrl.c...
linking... linking...
Program Size: Code=54952 RO-data=1680 RW-data=832 ZI-data=126624 Program Size: Code=54672 RO-data=1680 RW-data=832 ZI-data=126624
FromELF: creating hex file... FromELF: creating hex file...
"Infantry\Infantry.axf" - 0 Error(s), 1 Warning(s). "Infantry\Infantry.axf" - 0 Error(s), 0 Warning(s).
<h2>Software Packages used:</h2> <h2>Software Packages used:</h2>
@ -67,7 +61,7 @@ Package Vendor: Keil
* Component: ARM::CMSIS:CORE:5.4.0 * Component: ARM::CMSIS:CORE:5.4.0
Include file: CMSIS\Core\Include\tz_context.h Include file: CMSIS\Core\Include\tz_context.h
Build Time Elapsed: 00:00:02 Build Time Elapsed: 00:00:03
</pre> </pre>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -74,9 +74,9 @@
BSP_GPIO_WritePin(BSP_GPIO_ACCL_CS, GPIO_PIN_RESET) BSP_GPIO_WritePin(BSP_GPIO_ACCL_CS, GPIO_PIN_RESET)
#define BMI088_GYRO_NSS_SET() \ #define BMI088_GYRO_NSS_SET() \
BSP_GPIO_WritePin(BSP_GPIO_ACCL_CS, GPIO_PIN_SET) BSP_GPIO_WritePin(BSP_GPIO_GYRO_CS, GPIO_PIN_SET)
#define BMI088_GYRO_NSS_RESET() \ #define BMI088_GYRO_NSS_RESET() \
BSP_GPIO_WritePin(BSP_GPIO_ACCL_CS, GPIO_PIN_RESET) BSP_GPIO_WritePin(BSP_GPIO_GYRO_CS, GPIO_PIN_RESET)
/* Private typedef ---------------------------------------------------------- */ /* Private typedef ---------------------------------------------------------- */
typedef enum { typedef enum {
@ -176,7 +176,7 @@ static void BMI088_RxCpltCallback(void) {
BMI088_ACCL_NSS_SET(); BMI088_ACCL_NSS_SET();
osThreadFlagsSet(thread_alert, SIGNAL_BMI088_ACCL_RAW_REDY); osThreadFlagsSet(thread_alert, SIGNAL_BMI088_ACCL_RAW_REDY);
} }
if (BSP_GPIO_ReadPin(BSP_GPIO_ACCL_CS) == GPIO_PIN_RESET) { if (BSP_GPIO_ReadPin(BSP_GPIO_GYRO_CS) == GPIO_PIN_RESET) {
BMI088_GYRO_NSS_SET(); BMI088_GYRO_NSS_SET();
osThreadFlagsSet(thread_alert, SIGNAL_BMI088_GYRO_RAW_REDY); osThreadFlagsSet(thread_alert, SIGNAL_BMI088_GYRO_RAW_REDY);
} }
@ -212,13 +212,13 @@ int8_t BMI088_Init(BMI088_t *bmi088, const BMI088_Cali_t *cali) {
if (BMI_ReadSingle(BMI_GYRO, BMI088_REG_GYRO_CHIP_ID) != BMI088_CHIP_ID_GYRO) if (BMI_ReadSingle(BMI_GYRO, BMI088_REG_GYRO_CHIP_ID) != BMI088_CHIP_ID_GYRO)
return DEVICE_ERR_NO_DEV; return DEVICE_ERR_NO_DEV;
BSP_GPIO_DisableIRQ(BSP_GPIO_USER_KEY); BSP_GPIO_DisableIRQ(BSP_GPIO_ACCL_INT);
BSP_GPIO_DisableIRQ(BSP_GPIO_USER_KEY); BSP_GPIO_DisableIRQ(BSP_GPIO_GYRO_INT);
BSP_SPI_RegisterCallback(BSP_SPI_BMI088, BSP_SPI_RX_CPLT_CB, BSP_SPI_RegisterCallback(BSP_SPI_BMI088, BSP_SPI_RX_CPLT_CB,
BMI088_RxCpltCallback); BMI088_RxCpltCallback);
BSP_GPIO_RegisterCallback(BSP_GPIO_USER_KEY, BMI088_AcclIntCallback); BSP_GPIO_RegisterCallback(BSP_GPIO_ACCL_INT, BMI088_AcclIntCallback);
BSP_GPIO_RegisterCallback(BSP_GPIO_USER_KEY, BMI088_GyroIntCallback); BSP_GPIO_RegisterCallback(BSP_GPIO_GYRO_INT, BMI088_GyroIntCallback);
/* Accl init. */ /* Accl init. */
/* Filter setting: Normal. */ /* Filter setting: Normal. */
@ -259,8 +259,8 @@ int8_t BMI088_Init(BMI088_t *bmi088, const BMI088_Cali_t *cali) {
inited = true; inited = true;
BSP_GPIO_EnableIRQ(BSP_GPIO_USER_KEY); BSP_GPIO_EnableIRQ(BSP_GPIO_ACCL_INT);
BSP_GPIO_EnableIRQ(BSP_GPIO_USER_KEY); BSP_GPIO_EnableIRQ(BSP_GPIO_GYRO_INT);
return DEVICE_OK; return DEVICE_OK;
} }

View File

@ -1,9 +1,9 @@
bmi088: bmi088:
bsp_config: bsp_config:
BSP_GPIO_ACCL_CS: BSP_GPIO_ACCL_CS BSP_GPIO_ACCL_CS: BSP_GPIO_ACCL_CS
BSP_GPIO_ACCL_INT: BSP_GPIO_USER_KEY BSP_GPIO_ACCL_INT: BSP_GPIO_ACCL_INT
BSP_GPIO_GYRO_CS: BSP_GPIO_ACCL_CS BSP_GPIO_GYRO_CS: BSP_GPIO_GYRO_CS
BSP_GPIO_GYRO_INT: BSP_GPIO_USER_KEY BSP_GPIO_GYRO_INT: BSP_GPIO_GYRO_INT
BSP_SPI_BMI088: BSP_SPI_BMI088 BSP_SPI_BMI088: BSP_SPI_BMI088
enabled: true enabled: true
dr16: dr16:

View File

@ -23,7 +23,7 @@ Config_RobotParam_t robot_config = {
/* 云台欧拉角与角速度自由选择 */ /* 云台欧拉角与角速度自由选择 */
.Direction={ .Direction={
.Eulr={ .Eulr={
.pit=Rol, .pit=Pit,
.yaw=Yaw, .yaw=Yaw,
}, },
.Gyro={ .Gyro={
@ -35,8 +35,8 @@ Config_RobotParam_t robot_config = {
}, },
/*欧拉角限位和电机角度限位*/ /*欧拉角限位和电机角度限位*/
.Limit_t= { .Limit_t= {
.pit_max= 0.21, .pit_max= 0.462614686,
.pit_min=-0.53, .pit_min=-0.518002629,
/*零点参数*/ /*零点参数*/
.zero={ .zero={
.yaw_encoder=1.26, .yaw_encoder=1.26,
@ -66,32 +66,12 @@ Config_RobotParam_t robot_config = {
/*是否开启限位*/ /*是否开启限位*/
.limit_yaw=false, .limit_yaw=false,
.limit_pit=true, .limit_pit=true,
.pit_rm_motor={BSP_CAN_2,0x20A,MOTOR_GM6020,false,true}, .pit_rm_motor={BSP_CAN_2,0x20A,MOTOR_GM6020,true,false},
.yaw_rm_motor={BSP_CAN_2,0x209,MOTOR_GM6020,false,true}, .yaw_rm_motor={BSP_CAN_2,0x209,MOTOR_GM6020,false,false},
/*达妙电机参数自己配*/ /*达妙电机参数自己配*/
.major_yaw_dm_motor={
.can=BSP_CAN_2,
.can_id = 0x1,
.master_id=0x11,
.module = MOTOR_DM_J4310,
.reverse=false
},
.pit_dm_motor={
.can=BSP_CAN_2,
.can_id = 0x2,
.master_id=0x12,
.module = MOTOR_DM_J4310,
.reverse=true,
},
// .yaw_dm_motor={},
}, },
.dm_Params_t={ .dm_Params_t={
// .yaw_dm={.kd=0.1,},
// .yaw_dm_Reduction_ratio=1.0f,//减速比
.pit_dm={.kd=0.2,},
.pit_dm_Reduction_ratio=1.0f,
.major_yaw_dm={.kd=0.2,},
.major_yaw_dm_Reduction_ratio=1.0f,//减速比
}, },
.low_pass_cutoff_freq = { .low_pass_cutoff_freq = {
@ -99,74 +79,49 @@ Config_RobotParam_t robot_config = {
.gyro = 1000.0f, .gyro = 1000.0f,
}, },
.pid = { .pid = {
/* 大yaw参数 */
.major_yaw_omega={
.k = 0.0f,
.p = 0.08f,
.i = 0.1f,
.d = 0.0f,
.i_limit = 0.0f,
.out_limit = 12.0f,
.d_cutoff_freq = -1.0f,
.range = -1.0f
},
.major_yaw_angle={
.k = 1.0f,
.p = 75.0f,//36.5
.i = 20.0f,
.d = 0.2f,
.i_limit =5.0f,
.out_limit = 12.0f,
.d_cutoff_freq = 20.0f,
.range = M_2PI
},
/*欧拉角控制参数*/ /*欧拉角控制参数*/
.yaw_omega = { .yaw_omega = {
.k = 0.24f, .k = 0.45f,
.p = 1.0f, .p = 1.0f,
.i = 0.5f, .i = 6.0f,
.d = 0.0f, .d = 0.0008f,//0
.i_limit = 1.0f, .i_limit = 1.0f,
.out_limit = 1.0f, .out_limit = 1.0f,
.d_cutoff_freq = -1.0f, .d_cutoff_freq = -1.0f,
.range = -1.0f, .range = -1.0f,
}, },
.yaw_angle = { .yaw_angle = {
.k = 10.0f, .k = 10.0f,
.p = 1.0f, .p = 2.0f ,
.i = 0.0f, .i = 0.0f,
.d = 0.05f, .d = 0.0f,
.i_limit = 0.0f, .i_limit = 0.0f,
.out_limit = 10.0f, .out_limit = 10.0f,
.d_cutoff_freq = -1.0f, .d_cutoff_freq = -1.0f,
.range = M_2PI, .range = M_2PI,
}, },
.pit_omega = { .pit_omega = {
.k = 0.25f, .k = 0.25f,
.p = 1.0f, .p = 1.0f,
.i = 0.0f, .i = 0.0f,
.d = 0.0f, .d = 0.001901f,
.i_limit = 1.0f, .i_limit = 1.0f,
.out_limit = 1.0f, .out_limit = 1.0f,
.d_cutoff_freq = -1.0f, .d_cutoff_freq = -1.0f,
.range = -1.0f, .range = -1.0f,
}, },
.pit_angle = { .pit_angle = {
.k = 2.0f, .k = 2.0f,
.p = 5.0f, .p = 5.0f,
.i = 2.5f, .i = 2.5f,
.d = 0.0f, .d = 0.0f,
.i_limit = 0.0f, .i_limit = 0.0f,
.out_limit = 10.0f, .out_limit = 10.0f,
.d_cutoff_freq = -1.0f, .d_cutoff_freq = -1.0f,
.range = M_2PI, .range = M_2PI,
}, },
}
}
}, },
.shoot_param = { .shoot_param = {
@ -189,7 +144,7 @@ Config_RobotParam_t robot_config = {
{ {
.param = { .param = {
.can = BSP_CAN_2, .can = BSP_CAN_2,
.id = 0x201, .id = 0x205,
.module = MOTOR_M2006, .module = MOTOR_M2006,
.reverse = false, .reverse = false,
.gear = false, .gear = false,
@ -199,7 +154,7 @@ Config_RobotParam_t robot_config = {
{ {
.param = { .param = {
.can = BSP_CAN_2, .can = BSP_CAN_2,
.id = 0x202, .id = 0x206,
.module = MOTOR_M2006, .module = MOTOR_M2006,
.reverse = true, .reverse = true,
.gear = false, .gear = false,
@ -210,7 +165,7 @@ Config_RobotParam_t robot_config = {
}, },
.trig = { .trig = {
.can = BSP_CAN_2, .can = BSP_CAN_2,
.id = 0x203, .id = 0x207,
.module = MOTOR_M2006, .module = MOTOR_M2006,
.reverse = false, .reverse = false,
.gear=true, .gear=true,
@ -218,13 +173,14 @@ Config_RobotParam_t robot_config = {
}, },
.pid={ .pid={
.fric_follow = { .fric_follow = {
.k = 0.001f, .k=1.0f,
.p = 1.0f, .p=1.5f,
.i = 0.2f, .i=0.3f,
.d = 0.01f, .d=0.0f,
.i_limit = 0.5f, .i_limit=0.2f,
.out_limit = 0.5f, .out_limit=0.9f,
.d_cutoff_freq = -1.0f, .d_cutoff_freq=-1.0f,
.range=-1.0f,
}, },
.fric_err = { .fric_err = {
.k=0.0f, .k=0.0f,
@ -237,18 +193,18 @@ Config_RobotParam_t robot_config = {
.range=-1.0f, .range=-1.0f,
}, },
.trig_2006 = { .trig_2006 = {
.k = 12.0f, .k = 12.0f,
.p = 1.0f, .p = 1.0f,
.i = 0.0f, .i = 0.0f,
.d = 0.0450000018f, .d = 0.0450000018f,
.i_limit = 1.0f, .i_limit = 1.0f,
.out_limit = 1.0f, .out_limit = 1.0f,
.d_cutoff_freq = -1.0f, .d_cutoff_freq = -1.0f,
.range = M_2PI, .range = M_2PI,
}, },
.trig_omg_2006 = { .trig_omg_2006 = {
.k=2.0f, .k=0.f,
.p=1.5f, .p=1.0f,
.i=0.3f, .i=0.3f,
.d=0.5f, .d=0.5f,
.i_limit=0.2f, .i_limit=0.2f,
@ -256,26 +212,7 @@ Config_RobotParam_t robot_config = {
.d_cutoff_freq=-1.0f, .d_cutoff_freq=-1.0f,
.range=-1.0f, .range=-1.0f,
}, },
// .trig_3508 = {
// .k=0.5f,
// .p=1.8f,
// .i=0.3f,
// .d=0.1f,
// .i_limit=0.15f,
// .out_limit=1.0f,
// .d_cutoff_freq=-1.0f,
// .range=M_2PI,
// },
// .trig_omg_3508 = {
// .k=1.0f,
// .p=1.0f,
// .i=0.0f,
// .d=0.0f,
// .i_limit=0.0f,
// .out_limit=1.0f,
// .d_cutoff_freq=-1.0f,
// .range=-1.0f,
// },
}, },
.filter={ .filter={
.fric = { .fric = {

View File

@ -428,7 +428,7 @@ int8_t Gimbal_Control(Gimbal_t *g, Gimbal_CMD_t *g_cmd) {
pit_omega_set_point = PID_Calc(&(g->pid.pit_angle), g->setpoint.eulr.pit, pit_omega_set_point = PID_Calc(&(g->pid.pit_angle), g->setpoint.eulr.pit,
g->direction.Eulr.pit, 0.0f, g->dt); g->direction.Eulr.pit, 0.0f, g->dt);
g->out.pit = PID_Calc(&(g->pid.pit_omega), pit_omega_set_point, g->out.pit = PID_Calc(&(g->pid.pit_omega), pit_omega_set_point,
g->feedback.imu.gyro.y, 0.f, g->dt); g->direction.Gyro.pit, 0.f, g->dt);
/*前馈添加*/ /*前馈添加*/
if(g->param->feedforward.imu.yaw==true) if(g->param->feedforward.imu.yaw==true)

View File

@ -12,8 +12,8 @@ int8_t Gimbal_Cmd( Gimbal_CMD_t *g_cmd, DR16_t *dr16)
case DR16_SW_MID: case DR16_SW_MID:
g_cmd->ctrl_mode= GIMBAL_MODE_REMOTE; /* 遥控器模式 */ g_cmd->ctrl_mode= GIMBAL_MODE_REMOTE; /* 遥控器模式 */
g_cmd->mode= GIMBAL_MODE_ABSOLUTE; g_cmd->mode= GIMBAL_MODE_ABSOLUTE;
g_cmd->delta_yaw=0.8*(dr16->raw_data.ch_r_x-1024)/660; /* 云台Yaw速度设定 */ g_cmd->delta_yaw=1.5*dr16->data.ch_r_x; /* 云台Yaw速度设定 */
g_cmd->delta_pit=0.6*(dr16->raw_data.ch_r_y-16)/640; /* 云台Pitch速度设定 */ g_cmd->delta_pit=0.4*dr16->data.ch_r_y; /* 云台Pitch速度设定 */
break; break;
case DR16_SW_UP: case DR16_SW_UP:
g_cmd->ctrl_mode= GIMBAL_MODE_AI; /* 遥控器模式 */ g_cmd->ctrl_mode= GIMBAL_MODE_AI; /* 遥控器模式 */

View File

@ -376,12 +376,12 @@ int8_t Shoot_RunningFSM(Shoot_t *s, Shoot_CMD_t *cmd)
s->var_trig.trig_agl, s->var_trig.trig_agl,
0, 0,
s->timer.dt); s->timer.dt);
s->output.outomg_trig =PID_Calc(&s->pid.trig_omg, // s->output.outomg_trig =PID_Calc(&s->pid.trig_omg,
s->output.outagl_trig, // s->output.outagl_trig,
s->var_trig.trig_rpm, // s->var_trig.trig_rpm,
0, // 0,
s->timer.dt); // s->timer.dt);
s->output.outlpf_trig =LowPassFilter2p_Apply(&s->filter.trig.out, s->output.outomg_trig); s->output.outlpf_trig =LowPassFilter2p_Apply(&s->filter.trig.out,s->output.outagl_trig);
MOTOR_RM_SetOutput(&s->param->motor.trig, s->output.outlpf_trig); MOTOR_RM_SetOutput(&s->param->motor.trig, s->output.outlpf_trig);
/* 检查状态机 */ /* 检查状态机 */

View File

@ -41,7 +41,10 @@ void Task_shoot_ctrl(void *argument) {
tick += delay_tick; /* 计算下一个唤醒时刻 */ tick += delay_tick; /* 计算下一个唤醒时刻 */
/* USER CODE BEGIN */ /* USER CODE BEGIN */
osMessageQueueGet(task_runtime.msgq.shoot.cmd, &shoot_cmd, NULL, 0); osMessageQueueGet(task_runtime.msgq.shoot.cmd, &shoot_cmd, NULL, 0);
shoot_cmd.mode=SHOOT_MODE_SINGLE; // shoot_cmd.ready =shoot_cmd.ready;
// shoot_cmd.firecmd =shoot_cmd.firecmd;
// shoot.target_variable.fric_rpm=4000;
// shoot_cmd.mode=SHOOT_MODE_SINGLE;
Shoot_UpdateFeedback(&shoot); Shoot_UpdateFeedback(&shoot);
Shoot_Control(&shoot,&shoot_cmd); Shoot_Control(&shoot,&shoot_cmd);
/* USER CODE END */ /* USER CODE END */