纪念逝去的RC、PC、NUC、REF_GET

This commit is contained in:
yxming66 2025-11-15 00:12:10 +08:00
parent 2978659f20
commit d6e889b0a7
59 changed files with 17181 additions and 109964 deletions

View File

@ -57,11 +57,11 @@ target_sources(${CMAKE_PROJECT_NAME} PRIVATE
# User/component sources
User/component/ahrs.c
User/component/at9s_pro_cmd.c
User/component/filter.c
User/component/mixer.c
User/component/pid.c
User/component/user_math.c
User/component/crc16.c
# User/device sources
User/device/dr16.c

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -103,7 +103,7 @@
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>6</nTsel>
<nTsel>4</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
@ -114,13 +114,13 @@
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
<pMon>Segger\JL2CM3.dll</pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGUARM</Key>
<Name>(105=-1,-1,-1,-1,0)</Name>
<Name>d</Name>
</SetRegEntry>
<SetRegEntry>
<Number>0</Number>
@ -157,57 +157,9 @@
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>577</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134235006</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\User\module\cmd.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\hero\../User/module/cmd.c\577</Expression>
</Bp>
<Bp>
<Number>1</Number>
<Type>0</Type>
<LineNumber>585</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134234566</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\User\module\cmd.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\hero\../User/module/cmd.c\585</Expression>
</Bp>
<Bp>
<Number>2</Number>
<Type>0</Type>
<LineNumber>592</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134234680</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>..\User\module\cmd.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\hero\../User/module/cmd.c\592</Expression>
</Bp>
<Bp>
<Number>3</Number>
<Type>0</Type>
<LineNumber>594</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134234724</Address>
<Address>134236724</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
@ -219,20 +171,84 @@
<Expression>\\hero\../User/module/cmd.c\594</Expression>
</Bp>
<Bp>
<Number>4</Number>
<Number>1</Number>
<Type>0</Type>
<LineNumber>597</LineNumber>
<LineNumber>578</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>134234756</Address>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\User\module\cmd.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\hero\../User/module/cmd.c\597</Expression>
<Expression></Expression>
</Bp>
<Bp>
<Number>2</Number>
<Type>0</Type>
<LineNumber>586</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\User\module\cmd.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>3</Number>
<Type>0</Type>
<LineNumber>593</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\User\module\cmd.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>4</Number>
<Type>0</Type>
<LineNumber>595</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\User\module\cmd.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
<Bp>
<Number>5</Number>
<Type>0</Type>
<LineNumber>598</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>..\User\module\cmd.c</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
</Breakpoint>
<WatchWindow1>
@ -333,6 +349,11 @@
<WinNumber>2</WinNumber>
<ItemText>robot_config</ItemText>
</Ww>
<Ww>
<count>5</count>
<WinNumber>2</WinNumber>
<ItemText>\\hero\../User/task/cmd.c\cmd.input.rc.data</ItemText>
</Ww>
</WatchWindow2>
<Tracepoint>
<THDelay>0</THDelay>
@ -1316,6 +1337,30 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>74</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\User\device\dr16.c</PathWithFileName>
<FilenameWithoutPath>dr16.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>7</GroupNumber>
<FileNumber>75</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\User\device\dr16.h</PathWithFileName>
<FilenameWithoutPath>dr16.h</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@ -1326,7 +1371,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>74</FileNumber>
<FileNumber>76</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1338,7 +1383,7 @@
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>75</FileNumber>
<FileNumber>77</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -1348,30 +1393,6 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>76</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\User\component\at9s_pro_cmd.c</PathWithFileName>
<FilenameWithoutPath>at9s_pro_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>77</FileNumber>
<FileType>5</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\User\component\at9s_pro_cmd.h</PathWithFileName>
<FilenameWithoutPath>at9s_pro_cmd.h</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>8</GroupNumber>
<FileNumber>78</FileNumber>

View File

@ -778,6 +778,16 @@
<FileType>5</FileType>
<FilePath>..\User\device\vofa.h</FilePath>
</File>
<File>
<FileName>dr16.c</FileName>
<FileType>1</FileType>
<FilePath>..\User\device\dr16.c</FilePath>
</File>
<File>
<FileName>dr16.h</FileName>
<FileType>5</FileType>
<FilePath>..\User\device\dr16.h</FilePath>
</File>
</Files>
</Group>
<Group>
@ -793,16 +803,6 @@
<FileType>5</FileType>
<FilePath>..\User\component\ahrs.h</FilePath>
</File>
<File>
<FileName>at9s_pro_cmd.c</FileName>
<FileType>1</FileType>
<FilePath>..\User\component\at9s_pro_cmd.c</FilePath>
</File>
<File>
<FileName>at9s_pro_cmd.h</FileName>
<FileType>5</FileType>
<FilePath>..\User\component\at9s_pro_cmd.h</FilePath>
</File>
<File>
<FileName>filter.c</FileName>
<FileType>1</FileType>

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,6 @@
hero/cmd.o: ..\User\module\cmd.c ..\User\module\cmd.h \
hero/cmd.o: ..\User\module\cmd.c \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdint.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\string.h ..\User\module\cmd.h \
..\User\module\chassis.h \
..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stddef.h ..\User\bsp\can.h \
@ -58,4 +59,4 @@ hero/cmd.o: ..\User\module\cmd.c ..\User\module\cmd.h \
..\User\device\device.h ..\User\module\gimbal.h \
..\User\component\ahrs.h ..\User\component\pid.h \
..\User\device\motor_dm.h ..\User\module\shoot.h ..\Core\Inc\main.h \
..\User\device\at9s_pro.h ..\User\bsp\time.h
..\User\device\at9s_pro.h ..\User\device\vt13.h ..\User\bsp\time.h

Binary file not shown.

View File

@ -11,15 +11,15 @@ hero/cmd_1.o: ..\User\task\cmd.c ..\User\task\user_task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h \
..\User\device\at9s_pro.h ..\User\component\user_math.h \
..\User\device\dr16.h ..\User\component\user_math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\float.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\device\device.h ..\User\module\config.h \
..\User\component\pid.h ..\User\component\filter.h \
..\User\device\motor.h ..\User\device\motor_rm.h ..\User\bsp\can.h \
..\Core\Inc\can.h ..\Core\Inc\main.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h \
..\User\device\device.h ..\User\device\at9s_pro.h \
..\User\module\config.h ..\User\component\pid.h \
..\User\component\filter.h ..\User\device\motor.h \
..\User\device\motor_rm.h ..\User\bsp\can.h ..\Core\Inc\can.h \
..\Core\Inc\main.h ..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h \
..\Core\Inc\stm32f4xx_hal_conf.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h \

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -11,11 +11,6 @@ hero/ctrl_shoot.o: ..\User\task\ctrl_shoot.c ..\User\task\user_task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h \
..\User\component\at9s_pro_cmd.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\device\at9s_pro.h ..\User\component\user_math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\float.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h ..\User\device\device.h \
..\User\module\shoot.h ..\Core\Inc\main.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h \
..\Core\Inc\stm32f4xx_hal_conf.h \
@ -50,9 +45,13 @@ hero/ctrl_shoot.o: ..\User\task\ctrl_shoot.c ..\User\task\user_task.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h \
..\User\component\pid.h ..\User\component\filter.h \
..\User\device\motor_rm.h ..\User\device\motor.h ..\User\bsp\can.h \
..\Core\Inc\can.h ..\Core\Inc\main.h ..\User\bsp\bsp.h \
..\User\bsp\mm.h \
..\User\component\user_math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\float.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\device\motor_rm.h ..\User\device\motor.h \
..\User\device\device.h ..\User\bsp\can.h ..\Core\Inc\can.h \
..\Core\Inc\main.h ..\User\bsp\bsp.h ..\User\bsp\mm.h \
..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h \
..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h \
..\User\module\config.h ..\User\module\gimbal.h \

Binary file not shown.

View File

@ -2,14 +2,12 @@ hero/dr16.o: ..\User\device\dr16.c ..\User\device\dr16.h \
..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdint.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stddef.h \
..\User\component\dr16_cmd.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\component\component.h ..\User\component\user_math.h \
..\User\component\user_math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\float.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h ..\User\device\device.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\string.h ..\User\bsp\uart.h \
..\Core\Inc\usart.h ..\Core\Inc\main.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\device\device.h ..\User\bsp\uart.h ..\Core\Inc\usart.h \
..\Core\Inc\main.h ..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h \
..\Core\Inc\stm32f4xx_hal_conf.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h \
@ -41,4 +39,5 @@ hero/dr16.o: ..\User\device\dr16.c ..\User\device\dr16.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h \
..\User\bsp\bsp.h
..\User\bsp\bsp.h ..\User\bsp\time.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\string.h

BIN
MDK-ARM/hero/dr16.o Normal file

Binary file not shown.

Binary file not shown.

View File

@ -17,12 +17,12 @@ Library Manager: ArmAr.exe V6.16
Hex Converter: FromElf.exe V6.16
CPU DLL: SARMCM3.DLL V5.34.0.0
Dialog DLL: DCM.DLL V1.17.3.0
Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.8.0
Target DLL: Segger\JL2CM3.dll V2.99.38.0
Dialog DLL: TCM.DLL V1.48.0.0
<h2>Project:</h2>
D:\CUBEMX\hero\god-yuan-hero\MDK-ARM\hero.uvprojx
Project File Date: 11/07/2025
Project File Date: 11/12/2025
<h2>Output:</h2>
*** Using Compiler 'V6.16', folder: 'D:\cangming\ARM\ARMCLANG\Bin'
@ -31,11 +31,31 @@ Note: source file '..\User\bsp\can.c' - object file renamed from 'hero\can.o' to
Note: source file '..\User\bsp\gpio.c' - object file renamed from 'hero\gpio.o' to 'hero\gpio_1.o'.
Note: source file '..\User\bsp\spi.c' - object file renamed from 'hero\spi.o' to 'hero\spi_1.o'.
Note: source file '..\User\task\cmd.c' - object file renamed from 'hero\cmd.o' to 'hero\cmd_1.o'.
compiling rc.c...
../User/module/cmd.c(25): warning: enumeration values 'CMD_SRC_NUM' and 'CMD_SRC_ERR' not handled in switch [-Wswitch]
switch (source) {
^
../User/module/cmd.c(102): error: unknown type name 'DR16_DataPC_t'
DR16_DataPC_t dr16;
^
../User/module/cmd.c(105): error: unknown type name 'DR16_DataPC_t'
DR16_DataPC_t dr16;
^
../User/module/cmd.c(121): error: no member named 'dr16' in 'union rc_inputdata_u'
pc_data_buffer.dr16= rc_buffer.dr16.data.pc;
~~~~~~~~~ ^
../User/module/cmd.c(122): error: no member named 'dr16' in 'union rc_inputdata_u'
rc->online = rc->data->dr16.header.online;
~~~~~~~~ ^
../User/module/cmd.c(131): error: no member named 'dr16' in 'union rc_inputdata_u'
pc->online=rc_buffer.dr16.header.online;
~~~~~~~~~ ^
../User/module/cmd.c(259): error: no member named 'online' in 'AT9S_t'
c->output.shoot.cmd.online = at9s_out.online;
~~~~~~~~ ^
1 warning and 6 errors generated.
compiling cmd.c...
linking...
Program Size: Code=91640 RO-data=1216 RW-data=880 ZI-data=43712
FromELF: creating hex file...
"hero\hero.axf" - 0 Error(s), 0 Warning(s).
"hero\hero.axf" - 6 Error(s), 1 Warning(s).
<h2>Software Packages used:</h2>
@ -59,7 +79,8 @@ Package Vendor: Keil
* Component: ARM::CMSIS:CORE:5.4.0
Include file: CMSIS\Core\Include\tz_context.h
Build Time Elapsed: 00:00:04
Target not created.
Build Time Elapsed: 00:00:03
</pre>
</body>
</html>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -56,8 +56,8 @@
"hero\motor_dm.o"
"hero\motor_rm.o"
"hero\vofa.o"
"hero\dr16.o"
"hero\ahrs.o"
"hero\at9s_pro_cmd.o"
"hero\filter.o"
"hero\pid.o"
"hero\user_math.o"

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
Dependencies for Project 'hero', Target 'hero': (DO NOT MODIFY !)
CompilerVersion: 6160000::V6.16::ARMCLANG
F (startup_stm32f407xx.s)(0x690DDC5A)(--target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -masm=auto -c -gdwarf-3 -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -Wa,armasm,--pd,"__UVISION_VERSION SETA 534" -Wa,armasm,--pd,"_RTE_ SETA 1" -Wa,armasm,--pd,"STM32F407xx SETA 1" -Wa,armasm,--pd,"_RTE_ SETA 1" -o hero/startup_stm32f407xx.o)
F (startup_stm32f407xx.s)(0x691468EA)(--target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -masm=auto -c -gdwarf-3 -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -Wa,armasm,--pd,"__UVISION_VERSION SETA 534" -Wa,armasm,--pd,"_RTE_ SETA 1" -Wa,armasm,--pd,"STM32F407xx SETA 1" -Wa,armasm,--pd,"_RTE_ SETA 1" -o hero/startup_stm32f407xx.o)
F (../Core/Src/main.c)(0x690CA974)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/main.o -MD)
I (..\Core\Inc\main.h)(0x690CA974)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h)(0x68AD823F)
@ -139,7 +139,7 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (..\User\task\user_task.h)(0x6900CCBC)
I (..\User\task\user_task.h)(0x690DF200)
F (../Core/Src/can.c)(0x690CA972)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/can.o -MD)
I (..\Core\Inc\can.h)(0x690CA973)
I (..\Core\Inc\main.h)(0x690CA974)
@ -1677,8 +1677,8 @@ I (..\User\bsp\uart.h)(0x690DC361)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\bsp\bsp.h)(0x690DC361)
F (..\User\bsp\uart.h)(0x690DC361)()
F (..\User\device\AT9S_Pro.c)(0x6900CCBC)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/at9s_pro.o -MD)
I (..\User\device\AT9S_Pro.h)(0x6900CCBC)
F (..\User\device\AT9S_Pro.c)(0x69132759)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/at9s_pro.o -MD)
I (..\User\device\AT9S_Pro.h)(0x6913274F)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -1686,7 +1686,7 @@ I (..\User\component\user_math.h)(0x690DD4C7)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
I (..\User\bsp\uart.h)(0x690DC361)
I (..\Core\Inc\usart.h)(0x690CA973)
@ -1724,7 +1724,7 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\User\bsp\bsp.h)(0x690DC361)
F (..\User\device\AT9S_Pro.h)(0x6900CCBC)()
F (..\User\device\AT9S_Pro.h)(0x6913274F)()
F (..\User\device\bmi088.c)(0x690DC361)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/bmi088.o -MD)
I (..\User\device\bmi088.h)(0x690DC344)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
@ -1734,7 +1734,7 @@ I (..\User\component\user_math.h)(0x690DD4C7)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (..\Core\Inc\gpio.h)(0x690CA970)
I (..\Core\Inc\main.h)(0x690CA974)
@ -1777,17 +1777,17 @@ I (..\User\bsp\gpio.h)(0x690DC361)
I (..\User\bsp\spi.h)(0x690DC361)
I (..\Core\Inc\spi.h)(0x690CA973)
F (..\User\device\bmi088.h)(0x690DC344)()
F (..\User\device\device.h)(0x690DC361)()
F (..\User\device\device.h)(0x6911EB88)()
F (..\User\device\motor.c)(0x690DC361)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/motor.o -MD)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
F (..\User\device\motor.h)(0x690DC344)()
F (..\User\device\motor_dm.c)(0x690DC361)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/motor_dm.o -MD)
I (..\User\device\motor_dm.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\User\device\motor.h)(0x690DC344)
@ -1849,7 +1849,7 @@ F (..\User\device\motor_dm.h)(0x690DC344)()
F (..\User\device\motor_rm.c)(0x690DC361)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/motor_rm.o -MD)
I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\User\bsp\can.h)(0x690DC361)
@ -1950,8 +1950,57 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\bsp\bsp.h)(0x690DC361)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
F (..\User\device\vofa.h)(0x690DC344)()
F (..\User\device\dr16.c)(0x69133E05)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/dr16.o -MD)
I (..\User\device\dr16.h)(0x69133DC7)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\User\component\user_math.h)(0x690DD4C7)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\bsp\uart.h)(0x690DC361)
I (..\Core\Inc\usart.h)(0x690CA973)
I (..\Core\Inc\main.h)(0x690CA974)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h)(0x68AD823F)
I (..\Core\Inc\stm32f4xx_hal_conf.h)(0x690CA974)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h)(0x68AD823F)
I (..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h)(0x68AD823F)
I (..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f407xx.h)(0x68AD823F)
I (..\Drivers\CMSIS\Include\core_cm4.h)(0x68AD823F)
I (..\Drivers\CMSIS\Include\cmsis_version.h)(0x68AD823F)
I (..\Drivers\CMSIS\Include\cmsis_compiler.h)(0x68AD823F)
I (..\Drivers\CMSIS\Include\cmsis_armclang.h)(0x68AD823F)
I (..\Drivers\CMSIS\Include\mpu_armv7.h)(0x68AD823F)
I (..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_can.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_i2c_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_spi.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\User\bsp\bsp.h)(0x690DC361)
I (..\User\bsp\time.h)(0x690DC361)
I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
F (..\User\device\dr16.h)(0x69133DC7)()
F (..\User\component\ahrs.c)(0x690DC361)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/ahrs.o -MD)
I (..\User\component\ahrs.h)(0x690DC361)
I (..\User\component\user_math.h)(0x690DD4C7)
@ -1962,19 +2011,6 @@ I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
F (..\User\component\ahrs.h)(0x690DC361)()
F (..\User\component\at9s_pro_cmd.c)(0x6900CCBC)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/at9s_pro_cmd.o -MD)
I (..\User\component\at9s_pro_cmd.h)(0x6900CCBC)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\User\device\at9s_pro.h)(0x6900CCBC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\User\component\user_math.h)(0x690DD4C7)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (..\User\device\device.h)(0x690DC361)
I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
F (..\User\component\at9s_pro_cmd.h)(0x6900CCBC)()
F (..\User\component\filter.c)(0x690DC361)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/filter.o -MD)
I (..\User\component\filter.h)(0x690DC361)
I (..\User\component\user_math.h)(0x690DD4C7)
@ -2012,7 +2048,7 @@ I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
F (..\User\component\mixer.h)(0x690DC361)()
F (..\User\module\config.c)(0x690CA62A)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/config.o -MD)
F (..\User\module\config.c)(0x691468DB)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/config.o -MD)
I (..\User\module\config.h)(0x690CA16F)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\User\component\pid.h)(0x690DC361)
@ -2023,7 +2059,7 @@ I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\bsp\can.h)(0x690DC361)
I (..\Core\Inc\can.h)(0x690CA973)
@ -2073,13 +2109,13 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h)(0x68AD8208
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (..\User\module\shoot.h)(0x690B0C20)
I (..\User\module\shoot.h)(0x6911DC53)
I (..\User\module\gimbal.h)(0x6900CCBC)
I (..\User\component\ahrs.h)(0x690DC361)
I (..\User\device\motor_dm.h)(0x690DC344)
I (..\User\module\chassis.h)(0x690C9F84)
I (..\User\component\mixer.h)(0x690DC361)
I (..\User\module\cmd.h)(0x690D7097)
I (..\User\module\cmd.h)(0x69134909)
F (..\User\module\config.h)(0x690CA16F)()
F (..\User\module\gimbal.c)(0x6900CCBC)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/gimbal.o -MD)
I (..\User\module\gimbal.h)(0x6900CCBC)
@ -2093,7 +2129,7 @@ I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\User\component\filter.h)(0x690DC361)
I (..\User\component\pid.h)(0x690DC361)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\device\motor_dm.h)(0x690DC344)
I (..\User\bsp\can.h)(0x690DC361)
I (..\Core\Inc\can.h)(0x690CA973)
@ -2146,9 +2182,9 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8
I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\bsp\time.h)(0x690DC361)
F (..\User\module\gimbal.h)(0x6900CCBC)()
F (..\User\module\shoot.c)(0x690DE2B7)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/shoot.o -MD)
F (..\User\module\shoot.c)(0x6911DD87)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/shoot.o -MD)
I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
I (..\User\module\shoot.h)(0x690B0C20)
I (..\User\module\shoot.h)(0x6911DC53)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Core\Inc\main.h)(0x690CA974)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h)(0x68AD823F)
@ -2184,15 +2220,15 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_spi.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\component\pid.h)(0x690DC361)
I (..\User\component\filter.h)(0x690DC361)
I (..\User\component\user_math.h)(0x690DD4C7)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\bsp\can.h)(0x690DC361)
I (..\Core\Inc\can.h)(0x690CA973)
I (..\User\bsp\bsp.h)(0x690DC361)
@ -2209,7 +2245,7 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (..\User\bsp\time.h)(0x690DC361)
F (..\User\module\shoot.h)(0x690B0C20)()
F (..\User\module\shoot.h)(0x6911DC53)()
F (..\User\module\chassis.c)(0x690C9F73)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/chassis.o -MD)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
@ -2269,15 +2305,16 @@ I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\module\chassis.h)(0x690C9F84)
I (..\User\component\filter.h)(0x690DC361)
I (..\User\component\mixer.h)(0x690DC361)
I (..\User\component\pid.h)(0x690DC361)
F (..\User\module\chassis.h)(0x690C9F84)()
F (..\User\module\cmd.c)(0x690D756D)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/cmd.o -MD)
I (..\User\module\cmd.h)(0x690D7097)
F (..\User\module\cmd.c)(0x69146A45)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/cmd.o -MD)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
I (..\User\module\cmd.h)(0x69134909)
I (..\User\module\chassis.h)(0x690C9F84)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -2338,15 +2375,16 @@ I (..\User\component\pid.h)(0x690DC361)
I (..\User\component\ahrs.h)(0x690DC361)
I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\module\gimbal.h)(0x6900CCBC)
I (..\User\device\motor_dm.h)(0x690DC344)
I (..\User\module\shoot.h)(0x690B0C20)
I (..\User\device\at9s_pro.h)(0x6900CCBC)
I (..\User\module\shoot.h)(0x6911DC53)
I (..\User\device\at9s_pro.h)(0x6913274F)
I (..\User\device\vt13.h)(0x69133181)
I (..\User\bsp\time.h)(0x690DC361)
F (..\User\module\cmd.h)(0x690D7097)()
F (..\User\module\cmd.h)(0x69134909)()
F (..\User\task\atti_esti.c)(0x6900CCBC)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/atti_esti.o -MD)
I (..\User\task\user_task.h)(0x6900CCBC)
I (..\User\task\user_task.h)(0x690DF200)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -2406,7 +2444,7 @@ I (..\User\component\pid.h)(0x690DC361)
I (..\User\component\filter.h)(0x690DC361)
I (..\User\module\gimbal.h)(0x6900CCBC)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\device\motor_dm.h)(0x690DC344)
I (..\User\bsp\can.h)(0x690DC361)
I (..\Core\Inc\can.h)(0x690CA973)
@ -2415,8 +2453,8 @@ I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\module\chassis.h)(0x690C9F84)
I (..\User\component\mixer.h)(0x690DC361)
I (..\User\device\bmi088.h)(0x690DC344)
F (..\User\task\init.c)(0x690DD4FA)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/init.o -MD)
I (..\User\task\user_task.h)(0x6900CCBC)
F (..\User\task\init.c)(0x69132AA7)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/init.o -MD)
I (..\User\task\user_task.h)(0x690DF200)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -2429,13 +2467,13 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h)(0x68AD8208)
I (..\User\device\at9s_pro.h)(0x6900CCBC)
I (..\User\device\dr16.h)(0x69133DC7)
I (..\User\component\user_math.h)(0x690DD4C7)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\device.h)(0x690DC361)
I (..\User\component\at9s_pro_cmd.h)(0x6900CCBC)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\device\at9s_pro.h)(0x6913274F)
I (..\User\module\gimbal.h)(0x6900CCBC)
I (..\User\component\ahrs.h)(0x690DC361)
I (..\User\component\filter.h)(0x690DC361)
@ -2481,11 +2519,11 @@ I (..\User\bsp\bsp.h)(0x690DC361)
I (..\User\bsp\mm.h)(0x690DC361)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h)(0x68AD8208)
I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\module\shoot.h)(0x690B0C20)
I (..\User\module\shoot.h)(0x6911DC53)
I (..\User\module\chassis.h)(0x690C9F84)
I (..\User\component\mixer.h)(0x690DC361)
F (..\User\task\rc.c)(0x690DC5A9)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/rc.o -MD)
I (..\User\task\user_task.h)(0x6900CCBC)
F (..\User\task\rc.c)(0x69146A45)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/rc.o -MD)
I (..\User\task\user_task.h)(0x690DF200)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -2498,15 +2536,14 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h)(0x68AD8208)
I (..\User\device\at9s_pro.h)(0x6900CCBC)
I (..\User\device\at9s_pro.h)(0x6913274F)
I (..\User\component\user_math.h)(0x690DD4C7)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\device.h)(0x690DC361)
I (..\User\component\at9s_pro_cmd.h)(0x6900CCBC)
I (..\User\device\device.h)(0x6911EB88)
F (..\User\task\user_task.c)(0x6900CCBC)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/user_task.o -MD)
I (..\User\task\user_task.h)(0x6900CCBC)
I (..\User\task\user_task.h)(0x690DF200)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -2519,9 +2556,9 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h)(0x68AD8208)
F (..\User\task\user_task.h)(0x6900CCBC)()
F (..\User\task\user_task.h)(0x690DF200)()
F (..\User\task\blink.c)(0x6900CCBC)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/blink.o -MD)
I (..\User\task\user_task.h)(0x6900CCBC)
I (..\User\task\user_task.h)(0x690DF200)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -2571,8 +2608,8 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\User\bsp\bsp.h)(0x690DC361)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
F (..\User\task\ctrl_chassis.c)(0x6904CA68)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/ctrl_chassis.o -MD)
I (..\User\task\user_task.h)(0x6900CCBC)
F (..\User\task\ctrl_chassis.c)(0x6911D91D)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/ctrl_chassis.o -MD)
I (..\User\task\user_task.h)(0x690DF200)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -2634,14 +2671,14 @@ I (..\User\component\pid.h)(0x690DC361)
I (..\User\component\ahrs.h)(0x690DC361)
I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\module\config.h)(0x690CA16F)
I (..\User\module\shoot.h)(0x690B0C20)
I (..\User\module\shoot.h)(0x6911DC53)
I (..\User\module\gimbal.h)(0x6900CCBC)
I (..\User\device\motor_dm.h)(0x690DC344)
I (..\User\module\cmd.h)(0x690D7097)
I (..\User\module\cmd.h)(0x69134909)
F (..\User\task\ctrl_gimbal.c)(0x6900CCBC)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/ctrl_gimbal.o -MD)
I (..\User\task\user_task.h)(0x6900CCBC)
I (..\User\task\user_task.h)(0x690DF200)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -2663,7 +2700,7 @@ I (..\User\module\gimbal.h)(0x6900CCBC)
I (..\User\component\filter.h)(0x690DC361)
I (..\User\component\pid.h)(0x690DC361)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\device\motor_dm.h)(0x690DC344)
I (..\User\bsp\can.h)(0x690DC361)
I (..\Core\Inc\can.h)(0x690CA973)
@ -2705,12 +2742,12 @@ I (..\User\bsp\mm.h)(0x690DC361)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h)(0x68AD8208)
I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\module\config.h)(0x690CA16F)
I (..\User\module\shoot.h)(0x690B0C20)
I (..\User\module\shoot.h)(0x6911DC53)
I (..\User\module\chassis.h)(0x690C9F84)
I (..\User\component\mixer.h)(0x690DC361)
I (..\User\module\cmd.h)(0x690D7097)
F (..\User\task\ctrl_shoot.c)(0x690B11B7)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/ctrl_shoot.o -MD)
I (..\User\task\user_task.h)(0x6900CCBC)
I (..\User\module\cmd.h)(0x69134909)
F (..\User\task\ctrl_shoot.c)(0x691325FA)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/ctrl_shoot.o -MD)
I (..\User\task\user_task.h)(0x690DF200)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -2723,14 +2760,7 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h)(0x68AD8208)
I (..\User\component\at9s_pro_cmd.h)(0x6900CCBC)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\at9s_pro.h)(0x6900CCBC)
I (..\User\component\user_math.h)(0x690DD4C7)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (..\User\device\device.h)(0x690DC361)
I (..\User\module\shoot.h)(0x690B0C20)
I (..\User\module\shoot.h)(0x6911DC53)
I (..\Core\Inc\main.h)(0x690CA974)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h)(0x68AD823F)
I (..\Core\Inc\stm32f4xx_hal_conf.h)(0x690CA974)
@ -2766,8 +2796,13 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\User\component\pid.h)(0x690DC361)
I (..\User\component\filter.h)(0x690DC361)
I (..\User\component\user_math.h)(0x690DD4C7)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\motor_rm.h)(0x690DC344)
I (..\User\device\motor.h)(0x690DC344)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\bsp\can.h)(0x690DC361)
I (..\Core\Inc\can.h)(0x690CA973)
I (..\User\bsp\bsp.h)(0x690DC361)
@ -2779,9 +2814,9 @@ I (..\User\component\ahrs.h)(0x690DC361)
I (..\User\device\motor_dm.h)(0x690DC344)
I (..\User\module\chassis.h)(0x690C9F84)
I (..\User\component\mixer.h)(0x690DC361)
I (..\User\module\cmd.h)(0x690D7097)
F (..\User\task\cmd.c)(0x690DE39B)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/cmd_1.o -MD)
I (..\User\task\user_task.h)(0x6900CCBC)
I (..\User\module\cmd.h)(0x69134909)
F (..\User\task\cmd.c)(0x69132ADB)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O0 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_hero -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o hero/cmd_1.o -MD)
I (..\User\task\user_task.h)(0x690DF200)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -2794,12 +2829,13 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h)(0x68AD8208)
I (..\User\device\at9s_pro.h)(0x6900CCBC)
I (..\User\device\dr16.h)(0x69133DC7)
I (..\User\component\user_math.h)(0x690DD4C7)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\device.h)(0x690DC361)
I (..\User\device\device.h)(0x6911EB88)
I (..\User\device\at9s_pro.h)(0x6913274F)
I (..\User\module\config.h)(0x690CA16F)
I (..\User\component\pid.h)(0x690DC361)
I (..\User\component\filter.h)(0x690DC361)
@ -2843,10 +2879,10 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\User\bsp\bsp.h)(0x690DC361)
I (..\User\bsp\mm.h)(0x690DC361)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h)(0x68AD8208)
I (..\User\module\shoot.h)(0x690B0C20)
I (..\User\module\shoot.h)(0x6911DC53)
I (..\User\module\gimbal.h)(0x6900CCBC)
I (..\User\component\ahrs.h)(0x690DC361)
I (..\User\device\motor_dm.h)(0x690DC344)
I (..\User\module\chassis.h)(0x690C9F84)
I (..\User\component\mixer.h)(0x690DC361)
I (..\User\module\cmd.h)(0x690D7097)
I (..\User\module\cmd.h)(0x69134909)

View File

@ -11,11 +11,11 @@ hero/init.o: ..\User\task\init.c ..\User\task\user_task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h \
..\User\device\at9s_pro.h ..\User\component\user_math.h \
..\User\device\dr16.h ..\User\component\user_math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\float.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\device\device.h ..\User\component\at9s_pro_cmd.h \
..\User\device\device.h ..\User\device\at9s_pro.h \
..\User\module\gimbal.h ..\User\component\ahrs.h \
..\User\component\filter.h ..\User\component\pid.h \
..\User\device\motor.h ..\User\device\motor_dm.h ..\User\bsp\can.h \

Binary file not shown.

View File

@ -15,4 +15,4 @@ hero/rc.o: ..\User\task\rc.c ..\User\task\user_task.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\float.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\device\device.h ..\User\component\at9s_pro_cmd.h
..\User\device\device.h

Binary file not shown.

View File

@ -35,11 +35,11 @@ hero/shoot.o: ..\User\module\shoot.c \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\component\pid.h ..\User\component\filter.h \
..\User\component\user_math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\float.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\device\motor_rm.h ..\User\device\motor.h \
..\User\device\device.h ..\User\bsp\can.h ..\Core\Inc\can.h \
..\Core\Inc\main.h ..\User\bsp\bsp.h ..\User\bsp\mm.h \

Binary file not shown.

Binary file not shown.

View File

@ -1,62 +0,0 @@
/* Includes ----------------------------------------------------------------- */
#include "at9s_pro_cmd.h"
#include <string.h>
#include <math.h>
/* Private define ----------------------------------------------------------- */
#define DEVICE_AT9S_CH_VALUE_MIN 364u
#define DEVICE_AT9S_CH_VALUE_MID 1024u
#define DEVICE_AT9S_CH_VALUE_MAX 1684u
/* Private macro ------------------------------------------------------------ */
/* Private typedef ---------------------------------------------------------- */
/* Private variables -------------------------------------------------------- */
/* Private function -------------------------------------------------------- */
/* Exported functions ------------------------------------------------------- */
/**
* @brief ????????
*
* @param rc ?????????
* @param dr16_cmd ????
* @param dt_sec ???<EFBFBD><EFBFBD>???????
* @return int8_t 0?????<EFBFBD><EFBFBD>???
*/
int8_t COMP_AT9S_CMD_ParseRc(const DEVICE_AT9S_t *rc, COMP_AT9S_CMD_t *at9s_cmd) {
/* ????? */
if (rc == NULL) return -1;
if (at9s_cmd == NULL) return -1;
// at9s_cmd->ch_l_x = 2.0f*(rc->data.ch_l_x-209.0f)/(1596.0f-209.0f)-1.0f;
// at9s_cmd->ch_l_y = 2.0f*(rc->data.ch_l_y-178.0f)/(1575.0f-198.0f)-1.0f;
// at9s_cmd->ch_r_x = 2.0f*(rc->data.ch_r_x-210.0f)/(1596.0f-210.0f)-1.0f;
// at9s_cmd->ch_r_y = 2.0f*(rc->data.ch_r_y-221.0f)/(1604.0f-217.0f)-1.0f;
//
// if(fabs(at9s_cmd->ch_l_x)<=DEAD_AREA)at9s_cmd->ch_l_x = 0;
// if(fabs(at9s_cmd->ch_l_y)<=DEAD_AREA)at9s_cmd->ch_l_y = 0;
// if(fabs(at9s_cmd->ch_r_x)<=DEAD_AREA)at9s_cmd->ch_r_x = 0;
// if(fabs(at9s_cmd->ch_r_y)<=DEAD_AREA)at9s_cmd->ch_r_y= 0;
//
// if(fabs(at9s_cmd->ch_l_x)>=1.0f)at9s_cmd->ch_l_x= at9s_cmd->ch_l_x>0?1.0f:-1.0f;
// if(fabs(at9s_cmd->ch_l_y)>=1.0f)at9s_cmd->ch_l_y= at9s_cmd->ch_l_y>0?1.0f:-1.0f;
// if(fabs(at9s_cmd->ch_r_x)>=1.0f)at9s_cmd->ch_r_x= at9s_cmd->ch_r_x>0?1.0f:-1.0f;
// if(fabs(at9s_cmd->ch_r_y)>=1.0f)at9s_cmd->ch_r_y= at9s_cmd->ch_r_y>0?1.0f:-1.0f;
//
//
at9s_cmd->ch_l_x = rc->data.ch_l_x;
at9s_cmd->ch_l_y = rc->data.ch_l_y;
at9s_cmd->ch_r_x = rc->data.ch_r_x;
at9s_cmd->ch_r_y = rc->data.ch_r_y;
at9s_cmd->chassis_ctrl_vec.x = 0.5f*at9s_cmd->ch_r_x;
at9s_cmd->chassis_ctrl_vec.y = 0.5f*at9s_cmd->ch_r_y;
if(rc->online == false||rc->data.key_A==AT9S_CMD_SW_ERR)at9s_cmd->mode = MODE_CMD_BREAKING_CONTROL;
else if(rc->data.key_E == AT9S_CMD_SW_DOWN)at9s_cmd->mode = MODE_CMD_ONLT_GIMBAL;
else if(rc->data.key_E == AT9S_CMD_SW_MID)at9s_cmd->mode = MODE_CMD_FOLLOW;
else if(rc->data.key_E == AT9S_CMD_SW_UP)at9s_cmd->mode = MODE_CMD_SPIN;
at9s_cmd->online = rc->online;
return 0;
}

View File

@ -1,61 +0,0 @@
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include <stdbool.h>
#include <stdint.h>
#include "device/at9s_pro.h"
#define DR16_CMD_REFEREE_MAX_NUM (3) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD><DEB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
/* <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> */
typedef enum {
MODE_CMD_BREAKING_CONTROL = 0,
MODE_CMD_ONLT_GIMBAL = 1,
MODE_CMD_FOLLOW = 2,
MODE_CMD_SPIN = 3,
} COMP_CMD_MODE_t;
typedef struct
{
bool online;
int8_t mode;
bool ai;
float ch_l_x; /* <20><>ҡ<EFBFBD><D2A1> X */
float ch_l_y; /* <20><>ҡ<EFBFBD><D2A1> Y<><59><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD> */
float ch_r_x; /* <20><>ҡ<EFBFBD><D2A1> X */
float ch_r_y; /* <20><>ҡ<EFBFBD><D2A1> Y */
struct{
float x;
float y;
}chassis_ctrl_vec;
struct{
float w;
}gimbal_yaw_ctrl_vec;
struct{
float w;
}gimbal_pit_ctrl_vec;
struct{
bool ready;
bool firecmd;
}shoot;
} COMP_AT9S_CMD_t;
int8_t COMP_AT9S_CMD_ParseRc(const DEVICE_AT9S_t *rc, COMP_AT9S_CMD_t *at9s_cmd);
#ifdef __cplusplus
}
#endif

View File

@ -14,6 +14,9 @@ pid:
dependencies:
- component/filter
enabled: true
crc16:
dependencies: []
enabled: true
user_math:
dependencies: []
enabled: true

62
User/component/crc16.c Normal file
View File

@ -0,0 +1,62 @@
#include "crc16.h"
/* USER INCLUDE BEGIN */
/* USER INCLUDE END */
/* USER DEFINE BEGIN */
/* USER DEFINE END */
static const uint16_t crc16_tab[256] = {
0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 0x8c48,
0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 0x1081, 0x0108,
0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 0x9cc9, 0x8d40, 0xbfdb,
0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 0x2102, 0x308b, 0x0210, 0x1399,
0x6726, 0x76af, 0x4434, 0x55bd, 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e,
0xfae7, 0xc87c, 0xd9f5, 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e,
0x54b5, 0x453c, 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd,
0xc974, 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb,
0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 0x5285,
0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 0xdecd, 0xcf44,
0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 0x6306, 0x728f, 0x4014,
0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 0xef4e, 0xfec7, 0xcc5c, 0xddd5,
0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3,
0x242a, 0x16b1, 0x0738, 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862,
0x9af9, 0x8b70, 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e,
0xf0b7, 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff,
0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 0x18c1,
0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 0xa50a, 0xb483,
0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 0x2942, 0x38cb, 0x0a50,
0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 0xb58b, 0xa402, 0x9699, 0x8710,
0xf3af, 0xe226, 0xd0bd, 0xc134, 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7,
0x6e6e, 0x5cf5, 0x4d7c, 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1,
0xa33a, 0xb2b3, 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72,
0x3efb, 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232,
0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 0xe70e,
0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 0x6b46, 0x7acf,
0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 0xf78f, 0xe606, 0xd49d,
0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 0x7bc7, 0x6a4e, 0x58d5, 0x495c,
0x3de3, 0x2c6a, 0x1ef1, 0x0f78};
static inline uint16_t CRC16_Byte(uint16_t crc, const uint8_t data) {
return (crc >> 8) ^ crc16_tab[(crc ^ data) & 0xff];
}
uint16_t CRC16_Calc(const uint8_t *buf, size_t len, uint16_t crc) {
while (len--) crc = CRC16_Byte(crc, *buf++);
return crc;
}
bool CRC16_Verify(const uint8_t *buf, size_t len) {
if (len < 2) return false;
uint16_t expected = CRC16_Calc(buf, len - sizeof(uint16_t), CRC16_INIT);
return expected ==
((const uint16_t *)((const uint8_t *)buf +
(len % 2)))[len / sizeof(uint16_t) - 1];
}
/* USER FUNCTION BEGIN */
/* USER FUNCTION END */

30
User/component/crc16.h Normal file
View File

@ -0,0 +1,30 @@
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include <stdbool.h>
#include "user_math.h"
/* USER INCLUDE BEGIN */
/* USER INCLUDE END */
/* USER DEFINE BEGIN */
/* USER DEFINE END */
#define CRC16_INIT 0XFFFF
uint16_t CRC16_Calc(const uint8_t *buf, size_t len, uint16_t crc);
bool CRC16_Verify(const uint8_t *buf, size_t len);
/* USER FUNCTION BEGIN */
/* USER FUNCTION END */
#ifdef __cplusplus
}
#endif

View File

@ -6,57 +6,57 @@
#include "device/device.h"
/* Private define ----------------------------------------------------------- */
#define DEAD_AREA 0.05f
#define DEAD_AREA 0.025f
/* Private variables -------------------------------------------------------- */
static osThreadId_t thread_alert;
static bool inited = false;
/* Private function --------------------------------------------------------- */
static void DEVICE_AT9S_RxCpltCallback(void)
static void AT9S_RxCpltCallback(void)
{
osThreadFlagsSet(thread_alert, SIGNAL_AT9S_RAW_REDY);
}
/* Exported functions ------------------------------------------------------- */
int8_t DEVICE_AT9S_Init(DEVICE_AT9S_t *at9s)
int8_t AT9S_Init(AT9S_t *at9s)
{
if (at9s == NULL) return DEVICE_ERR_NULL;
if (inited) return DEVICE_ERR_INITED;
if ((thread_alert = osThreadGetId()) == NULL) return DEVICE_ERR_NULL;
BSP_UART_RegisterCallback(BSP_UART_AT9S_PRO, BSP_UART_RX_CPLT_CB,
DEVICE_AT9S_RxCpltCallback);
AT9S_RxCpltCallback);
inited = true;
return DEVICE_OK;
}
int8_t DEVICE_AT9S_Restart(void)
int8_t AT9S_Restart(void)
{
__HAL_UART_DISABLE(BSP_UART_GetHandle(BSP_UART_AT9S_PRO));
__HAL_UART_ENABLE(BSP_UART_GetHandle(BSP_UART_AT9S_PRO));
return DEVICE_OK;
}
int8_t DEVICE_AT9S_StartDmaRecv(uint8_t *cmd_buffer)
int8_t AT9S_StartDmaRecv(uint8_t *cmd_buffer)
{
if (HAL_UART_Receive_DMA(BSP_UART_GetHandle(BSP_UART_AT9S_PRO),
cmd_buffer,
DEVICE_AT9S_FRAME_LEN) == HAL_OK)
AT9S_FRAME_LEN) == HAL_OK)
return DEVICE_OK;
return DEVICE_ERR;
}
bool DEVICE_AT9S_WaitDmaCplt(uint32_t timeout)
bool AT9S_WaitDmaCplt(uint32_t timeout)
{
return (osThreadFlagsWait(SIGNAL_AT9S_RAW_REDY,
osFlagsWaitAll, timeout) == SIGNAL_AT9S_RAW_REDY);
}
DEVICE_AT9S_Raw_t r;
AT9S_Raw_t r;
/* 解析 25 字节原始帧并填充结构体 */
void DEVICE_AT9S_ParseRaw(const uint8_t raw[DEVICE_AT9S_FRAME_LEN], DEVICE_AT9S_t *out)
void AT9S_ParseRaw(const uint8_t raw[AT9S_FRAME_LEN], AT9S_t *out)
{
// DEVICE_AT9S_Raw_t r;
// AT9S_Raw_t r;
/* 摇杆 */
r.ch[0] = ((raw[1] | raw[2] << 8) & 0x07FF);
@ -85,37 +85,37 @@ void DEVICE_AT9S_ParseRaw(const uint8_t raw[DEVICE_AT9S_FRAME_LEN], DEVICE_AT9S_
((v) >= 500 && (v) < 1500) ? AT9S_CMD_SW_MID : \
((v) >= 1500 && (v) < 1700) ? AT9S_CMD_SW_DOWN : AT9S_CMD_SW_ERR
out->data.ch_l_x = 2.0f*(r.ch[3]-209.0f)/(1596.0f-209.0f)-1.0f;
out->data.ch_l_y = 2.0f*(r.ch[2]-178.0f)/(1575.0f-198.0f)-1.0f;
out->data.ch_r_x = 2.0f*(r.ch[0]-210.0f)/(1596.0f-210.0f)-1.0f;
out->data.ch_r_y = 2.0f*(r.ch[1]-221.0f)/(1604.0f-217.0f)-1.0f;
out->data.rc.ch_l_x = 2.0f*(r.ch[3]-209.0f)/(1596.0f-209.0f)-1.0f;
out->data.rc.ch_l_y = 2.0f*(r.ch[2]-178.0f)/(1575.0f-198.0f)-1.0f;
out->data.rc.ch_r_x = 2.0f*(r.ch[0]-210.0f)/(1596.0f-210.0f)-1.0f;
out->data.rc.ch_r_y = 2.0f*(r.ch[1]-221.0f)/(1604.0f-217.0f)-1.0f;
if(fabs(out->data.ch_l_x)<=DEAD_AREA)out->data.ch_l_x = 0;
if(fabs(out->data.ch_l_y)<=4*DEAD_AREA)out->data.ch_l_y = 0;
if(fabs(out->data.ch_r_x)<=DEAD_AREA)out->data.ch_r_x = 0;
if(fabs(out->data.ch_r_y)<=DEAD_AREA)out->data.ch_r_y = 0;
if(fabs(out->data.rc.ch_l_x)<=DEAD_AREA)out->data.rc.ch_l_x = 0;
if(fabs(out->data.rc.ch_l_y)<=4*DEAD_AREA)out->data.rc.ch_l_y = 0;
if(fabs(out->data.rc.ch_r_x)<=DEAD_AREA)out->data.rc.ch_r_x = 0;
if(fabs(out->data.rc.ch_r_y)<=DEAD_AREA)out->data.rc.ch_r_y = 0;
if(fabs(out->data.ch_l_x)>=1.0f)out->data.ch_l_x= out->data.ch_l_x>0?1.0f:-1.0f;
if(fabs(out->data.ch_l_y)>=1.0f)out->data.ch_l_y= out->data.ch_l_y>0?1.0f:-1.0f;
if(fabs(out->data.ch_r_x)>=1.0f)out->data.ch_r_x= out->data.ch_r_x>0?1.0f:-1.0f;
if(fabs(out->data.ch_r_y)>=1.0f)out->data.ch_r_y= out->data.ch_r_y>0?1.0f:-1.0f;
if(fabs(out->data.rc.ch_l_x)>=1.0f)out->data.rc.ch_l_x= out->data.rc.ch_l_x>0?1.0f:-1.0f;
if(fabs(out->data.rc.ch_l_y)>=1.0f)out->data.rc.ch_l_y= out->data.rc.ch_l_y>0?1.0f:-1.0f;
if(fabs(out->data.rc.ch_r_x)>=1.0f)out->data.rc.ch_r_x= out->data.rc.ch_r_x>0?1.0f:-1.0f;
if(fabs(out->data.rc.ch_r_y)>=1.0f)out->data.rc.ch_r_y= out->data.rc.ch_r_y>0?1.0f:-1.0f;
// out->data.ch_r_x = r.ch[0];
// out->data.ch_r_y = r.ch[1];
// out->data.ch_l_y = r.ch[2];
// out->data.ch_l_x = r.ch[3];
out->data.key_A = MAP_SWITCH_2(r.sw[0]);
out->data.key_B = MAP_SWITCH_2(r.sw[1]);
out->data.key_C = MAP_SWITCH_2(r.sw[2]);
out->data.key_D = MAP_SWITCH(r.sw[3]);
out->data.key_E = MAP_SWITCH(r.sw[4]);
out->data.key_F = MAP_SWITCH(r.sw[5]);
out->data.key_G = MAP_SWITCH_2(r.sw[6]);
out->data.key_H = MAP_SWITCH(r.sw[7]);
out->data.rc.key_A = MAP_SWITCH_2(r.sw[0]);
out->data.rc.key_B = MAP_SWITCH_2(r.sw[1]);
out->data.rc.key_C = MAP_SWITCH_2(r.sw[2]);
out->data.rc.key_D = MAP_SWITCH(r.sw[3]);
out->data.rc.key_E = MAP_SWITCH(r.sw[4]);
out->data.rc.key_F = MAP_SWITCH(r.sw[5]);
out->data.rc.key_G = MAP_SWITCH_2(r.sw[6]);
out->data.rc.key_H = MAP_SWITCH(r.sw[7]);
// out->knob_left = MAP_SWITCH(r.sw[6]);
// out->knob_right = MAP_SWITCH(r.sw[7]);
#undef MAP_SWITCH
//check online.
out->online = (r.sw[7] != 300&&r.ch[0] != 1000);
out->header.online = (r.sw[7] != 300&&r.ch[0] != 1000);
}

View File

@ -11,14 +11,14 @@ extern "C" {
#include "device.h"
/* Exported constants ------------------------------------------------------- */
#define DEVICE_AT9S_FRAME_LEN 25u
#define AT9S_FRAME_LEN 25u
/* Exported types ----------------------------------------------------------- */
typedef struct __attribute__((packed))
{
int16_t ch[4]; /* 摇杆原始值 */
int16_t sw[8]; /* 开关/旋钮原始值 */
} DEVICE_AT9S_Raw_t;
} AT9S_Raw_t;
/* 拨杆位置 */
typedef enum {
@ -26,8 +26,7 @@ typedef enum {
AT9S_CMD_SW_UP = 1,
AT9S_CMD_SW_MID = 3,
AT9S_CMD_SW_DOWN = 2,
} COMP_AT9S_CMD_SwitchPos_t;
} AT9S_CMD_SwitchPos_t;
typedef struct
{
float ch_l_x; /* 左摇杆 X */
@ -36,31 +35,35 @@ typedef struct
float ch_r_y; /* 右摇杆 Y */
/* 开关/旋钮离散化后状态 */
COMP_AT9S_CMD_SwitchPos_t key_A;
COMP_AT9S_CMD_SwitchPos_t key_B;
COMP_AT9S_CMD_SwitchPos_t key_C;
COMP_AT9S_CMD_SwitchPos_t key_D;
COMP_AT9S_CMD_SwitchPos_t key_E;
COMP_AT9S_CMD_SwitchPos_t key_F;
COMP_AT9S_CMD_SwitchPos_t key_G;
COMP_AT9S_CMD_SwitchPos_t key_H;
AT9S_CMD_SwitchPos_t key_A;
AT9S_CMD_SwitchPos_t key_B;
AT9S_CMD_SwitchPos_t key_C;
AT9S_CMD_SwitchPos_t key_D;
AT9S_CMD_SwitchPos_t key_E;
AT9S_CMD_SwitchPos_t key_F;
AT9S_CMD_SwitchPos_t key_G;
AT9S_CMD_SwitchPos_t key_H;
float knob_left;
float knob_right;
float back_left;
float back_right;
} DEVICE_AT9S_Data_t;
} AT9S_DataRC_t;
typedef struct
{
AT9S_DataRC_t rc;
} AT9S_Data_t;
typedef struct
{ bool online;
DEVICE_AT9S_Data_t data;
} DEVICE_AT9S_t;
typedef struct{
DEVICE_Header_t header;
AT9S_Data_t data;
} AT9S_t;
/* Exported functions prototypes -------------------------------------------- */
int8_t DEVICE_AT9S_Init(DEVICE_AT9S_t *at9s);
int8_t DEVICE_AT9S_Restart(void);
int8_t DEVICE_AT9S_StartDmaRecv(uint8_t *cmd_buffer);
bool DEVICE_AT9S_WaitDmaCplt(uint32_t timeout);
void DEVICE_AT9S_ParseRaw(const uint8_t raw[DEVICE_AT9S_FRAME_LEN], DEVICE_AT9S_t *out);
int8_t AT9S_Init(AT9S_t *at9s);
int8_t AT9S_Restart(void);
int8_t AT9S_StartDmaRecv(uint8_t *cmd_buffer);
bool AT9S_WaitDmaCplt(uint32_t timeout);
void AT9S_ParseRaw(const uint8_t raw[AT9S_FRAME_LEN], AT9S_t *out);
#ifdef __cplusplus
}

View File

@ -40,6 +40,7 @@ typedef struct {
/* USER STRUCT BEGIN */
#define SIGNAL_AT9S_RAW_REDY (1u << 7)
#define SIGNAL_VT13_RAW_REDY (1u << 8)
/* USER STRUCT END */
/* USER FUNCTION BEGIN */

View File

@ -120,37 +120,37 @@ int8_t DR16_ParseData(DR16_t *dr16){
float full_range = (float)(DR16_CH_VALUE_MAX - DR16_CH_VALUE_MIN);
// 解析摇杆数据
dr16->data.ch_r_x = 2.0f * ((float)dr16->raw_data.ch_r_x - DR16_CH_VALUE_MID) / full_range;
dr16->data.ch_r_y = 2.0f * ((float)dr16->raw_data.ch_r_y - DR16_CH_VALUE_MID) / full_range;
dr16->data.ch_l_x = 2.0f * ((float)dr16->raw_data.ch_l_x - DR16_CH_VALUE_MID) / full_range;
dr16->data.ch_l_y = 2.0f * ((float)dr16->raw_data.ch_l_y - DR16_CH_VALUE_MID) / full_range;
dr16->data.rc.ch_r_x = 2.0f * ((float)dr16->raw_data.ch_r_x - DR16_CH_VALUE_MID) / full_range;
dr16->data.rc.ch_r_y = 2.0f * ((float)dr16->raw_data.ch_r_y - DR16_CH_VALUE_MID) / full_range;
dr16->data.rc.ch_l_x = 2.0f * ((float)dr16->raw_data.ch_l_x - DR16_CH_VALUE_MID) / full_range;
dr16->data.rc.ch_l_y = 2.0f * ((float)dr16->raw_data.ch_l_y - DR16_CH_VALUE_MID) / full_range;
// 解析拨杆位置
dr16->data.sw_l = (DR16_SwitchPos_t)dr16->raw_data.sw_l;
dr16->data.sw_r = (DR16_SwitchPos_t)dr16->raw_data.sw_r;
dr16->data.rc.sw_l = (DR16_SwitchPos_t)dr16->raw_data.sw_l;
dr16->data.rc.sw_r = (DR16_SwitchPos_t)dr16->raw_data.sw_r;
// 解析鼠标数据
dr16->data.mouse.x = dr16->raw_data.x;
dr16->data.mouse.y = dr16->raw_data.y;
dr16->data.mouse.z = dr16->raw_data.z;
dr16->data.pc.mouse.x = dr16->raw_data.x;
dr16->data.pc.mouse.y = dr16->raw_data.y;
dr16->data.pc.mouse.z = dr16->raw_data.z;
dr16->data.mouse.l_click = dr16->raw_data.press_l;
dr16->data.mouse.r_click = dr16->raw_data.press_r;
dr16->data.pc.mouse.l_click = dr16->raw_data.press_l;
dr16->data.pc.mouse.r_click = dr16->raw_data.press_r;
// 解析键盘按键 - 使用union简化代码
uint16_t key_value = dr16->raw_data.key;
// 解析键盘位映射W-B键位0-15
for (int i = DR16_KEY_W; i <= DR16_KEY_B; i++) {
dr16->data.keyboard.key[i] = (key_value & (1 << i)) != 0;
dr16->data.pc.keyboard.key[i] = (key_value & (1 << i)) != 0;
}
// 解析鼠标点击
dr16->data.keyboard.key[DR16_L_CLICK] = dr16->data.mouse.l_click;
dr16->data.keyboard.key[DR16_R_CLICK] = dr16->data.mouse.r_click;
dr16->data.pc.keyboard.key[DR16_L_CLICK] = dr16->data.pc.mouse.l_click;
dr16->data.pc.keyboard.key[DR16_R_CLICK] = dr16->data.pc.mouse.r_click;
// 解析第五通道
dr16->data.ch_res = 2.0f * ((float)dr16->raw_data.res - DR16_CH_VALUE_MID) / full_range;
dr16->data.rc.ch_res = 2.0f * ((float)dr16->raw_data.res - DR16_CH_VALUE_MID) / full_range;
return DEVICE_OK;
}

View File

@ -66,8 +66,7 @@ typedef enum {
DR16_R_CLICK,
DR16_KEY_NUM,
} DR16_Key_t;
typedef struct {
typedef struct{
float ch_l_x; /* 遥控器左侧摇杆横轴值,上为正 */
float ch_l_y; /* 遥控器左侧摇杆纵轴值,右为正 */
float ch_r_x; /* 遥控器右侧摇杆横轴值,上为正 */
@ -78,6 +77,9 @@ typedef struct {
DR16_SwitchPos_t sw_r; /* 右侧拨杆位置 */
DR16_SwitchPos_t sw_l; /* 左侧拨杆位置 */
uint16_t res; /* 保留,未启用 */
}DR16_DataRC_t;
typedef struct{
struct {
int16_t x;
int16_t y;
@ -90,8 +92,10 @@ typedef struct {
bool key[DR16_KEY_NUM]; /* 键盘按键值 */
uint16_t value; /* 键盘按键值的位映射 */
} keyboard;
uint16_t res; /* 保留,未启用 */
}DR16_DataPC_t;
typedef struct {
DR16_DataRC_t rc;
DR16_DataPC_t pc;
} DR16_Data_t;
typedef struct {

208
User/device/vt13.c Normal file
View File

@ -0,0 +1,208 @@
/*
VT13接收机
Example
VT13_Init(&vt13);
while (1) {
VT13_StartDmaRecv(&vt13);
if (VT13_WaitDmaCplt(20)) {
if (VT13_Verify(&vt13)) {
VT13_ParseData(&vt13);
} else {
VT13_Offline(&vt13);
}
} else {
VT13_Offline(&vt13);
}
}
*/
/* Includes ----------------------------------------------------------------- */
#include "vt13.h"
#include "bsp/uart.h"
#include "bsp/time.h"
#include "device.h"
#include "component/crc16.h"
#include <string.h>
#include <stdbool.h>
/* USER INCLUDE BEGIN */
/* USER INCLUDE END */
/* Private define ----------------------------------------------------------- */
#define VT13_CH_VALUE_MIN (364u)
#define VT13_CH_VALUE_MID (1024u)
#define VT13_CH_VALUE_MAX (1684u)
#define VT13_FRAMEHEADER1 0xA9
#define VT13_FRAMEHEADER2 0x53
/* USER DEFINE BEGIN */
/* USER DEFINE END */
/* Private macro ------------------------------------------------------------ */
/* Private typedef ---------------------------------------------------------- */
/* Private variables -------------------------------------------------------- */
static osThreadId_t thread_alert;
static bool inited = false;
/* Private function -------------------------------------------------------- */
static void VT13_RxCpltCallback(void) {
osThreadFlagsSet(thread_alert, SIGNAL_VT13_RAW_REDY);
}
static bool VT13_Verify(VT13_t *vt13){
if (vt13 == NULL) return DEVICE_ERR_NULL;
if (vt13->raw_data.sof_1!=VT13_FRAMEHEADER1) {
return false;
}
if (vt13->raw_data.sof_2!=VT13_FRAMEHEADER2) {
return false;
}
if (!CRC16_Verify((const uint8_t *)&(vt13->raw_data),
sizeof(VT13_RawData_t))) {
return false;
}
return true;
}
static bool VT13_DataCorrupted(const VT13_t *vt13) {
if (vt13 == NULL) return DEVICE_ERR_NULL;
if ((vt13->raw_data.ch_0 < VT13_CH_VALUE_MIN) ||
(vt13->raw_data.ch_0 > VT13_CH_VALUE_MAX))
return DEVICE_ERR;
if ((vt13->raw_data.ch_1 < VT13_CH_VALUE_MIN) ||
(vt13->raw_data.ch_1 > VT13_CH_VALUE_MAX))
return DEVICE_ERR;
if ((vt13->raw_data.ch_2 < VT13_CH_VALUE_MIN) ||
(vt13->raw_data.ch_2 > VT13_CH_VALUE_MAX))
return DEVICE_ERR;
if ((vt13->raw_data.ch_3 < VT13_CH_VALUE_MIN) ||
(vt13->raw_data.ch_3 > VT13_CH_VALUE_MAX))
return DEVICE_ERR;
if ((vt13->raw_data.wheel < VT13_CH_VALUE_MIN) ||
(vt13->raw_data.wheel > VT13_CH_VALUE_MAX))
return DEVICE_ERR;
if (vt13->raw_data.mode_sw == 0) return DEVICE_ERR;
if (vt13->raw_data.pause == 0) return DEVICE_ERR;
if (vt13->raw_data.fn_1 == 0) return DEVICE_ERR;
if (vt13->raw_data.fn_2 == 0) return DEVICE_ERR;
return DEVICE_OK;
}
/* Exported functions ------------------------------------------------------- */
int8_t VT13_Init(VT13_t *vt13) {
if (vt13 == NULL) return DEVICE_ERR_NULL;
if (inited) return DEVICE_ERR_INITED;
if ((thread_alert = osThreadGetId()) == NULL) return DEVICE_ERR_NULL;
BSP_UART_RegisterCallback(BSP_UART_AT9S_PRO, BSP_UART_RX_CPLT_CB,
VT13_RxCpltCallback);
inited = true;
return DEVICE_OK;
}
int8_t VT13_Restart(void) {
__HAL_UART_DISABLE(BSP_UART_GetHandle(BSP_UART_AT9S_PRO));
__HAL_UART_ENABLE(BSP_UART_GetHandle(BSP_UART_AT9S_PRO));
return DEVICE_OK;
}
int8_t VT13_StartDmaRecv(VT13_t *vt13) {
if (HAL_UART_Receive_DMA(BSP_UART_GetHandle(BSP_UART_AT9S_PRO),
(uint8_t *)&(vt13->raw_data),
sizeof(vt13->raw_data)) == HAL_OK)
return DEVICE_OK;
return DEVICE_ERR;
}
bool VT13_WaitDmaCplt(uint32_t timeout) {
return (osThreadFlagsWait(SIGNAL_VT13_RAW_REDY, osFlagsWaitAll, timeout) ==
SIGNAL_VT13_RAW_REDY);
}
int8_t VT13_ParseData(VT13_t *vt13){
if (vt13 == NULL) return DEVICE_ERR_NULL;
if (!VT13_Verify(vt13)) {
return DEVICE_ERR;
}
if (VT13_DataCorrupted(vt13)) {
return DEVICE_ERR;
}
vt13->header.online = true;
vt13->header.last_online_time = BSP_TIME_Get_us();
memset(&(vt13->data), 0, sizeof(vt13->data));
float full_range = (float)(VT13_CH_VALUE_MAX - VT13_CH_VALUE_MIN);
// 解析摇杆数据
vt13->data.ch_r_x = 2.0f * ((float)vt13->raw_data.ch_0 - VT13_CH_VALUE_MID) / full_range;
vt13->data.ch_r_y = 2.0f * ((float)vt13->raw_data.ch_1 - VT13_CH_VALUE_MID) / full_range;
vt13->data.ch_l_x = 2.0f * ((float)vt13->raw_data.ch_2 - VT13_CH_VALUE_MID) / full_range;
vt13->data.ch_l_y = 2.0f * ((float)vt13->raw_data.ch_3 - VT13_CH_VALUE_MID) / full_range;
// 解析拨杆位置
vt13->data.sw_l = (VT13_SwitchPos_t)vt13->raw_data.fn_1;
vt13->data.sw_r = (VT13_SwitchPos_t)vt13->raw_data.fn_2;
vt13->data.sw_mode = (VT13_SwitchPos_t)vt13->raw_data.mode_sw;
vt13->data.sw_pause = (VT13_SwitchPos_t)vt13->raw_data.pause;
vt13->data.sw_trig = (VT13_SwitchPos_t)vt13->raw_data.trigger;
// 解析鼠标数据
vt13->data.mouse.x = vt13->raw_data.mouse_x;
vt13->data.mouse.y = vt13->raw_data.mouse_y;
vt13->data.mouse.z = vt13->raw_data.mouse_z;
vt13->data.mouse.l_click = vt13->raw_data.mouse_left;
vt13->data.mouse.m_click = vt13->raw_data.mouse_middle;
vt13->data.mouse.r_click = vt13->raw_data.mouse_right;
// 解析键盘按键 - 使用union简化代码
uint16_t key_value = vt13->raw_data.key;
// 解析键盘位映射W-B键位0-15
for (int i = VT13_KEY_W; i <= VT13_KEY_B; i++) {
vt13->data.keyboard.key[i] = (key_value & (1 << i)) != 0;
}
// 解析鼠标点击
vt13->data.keyboard.key[VT13_L_CLICK] = vt13->data.mouse.l_click;
vt13->data.keyboard.key[VT13_R_CLICK] = vt13->data.mouse.r_click;
// 解析第五通道
vt13->data.ch_res = 2.0f * ((float)vt13->raw_data.wheel - VT13_CH_VALUE_MID) / full_range;
return DEVICE_OK;
}
int8_t VT13_Offline(VT13_t *vt13){
if (vt13 == NULL) return DEVICE_ERR_NULL;
vt13->header.online = false;
memset(&(vt13->data), 0, sizeof(vt13->data));
return DEVICE_OK;
}
/* USER FUNCTION BEGIN */
/* USER FUNCTION END */

131
User/device/vt13.h Normal file
View File

@ -0,0 +1,131 @@
#pragma once
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ----------------------------------------------------------------- */
#include <cmsis_os2.h>
#include "component/user_math.h"
#include "device.h"
/* USER INCLUDE BEGIN */
/* USER INCLUDE END */
/* USER DEFINE BEGIN */
/* USER DEFINE END */
/* Exported constants ------------------------------------------------------- */
/* Exported macro ----------------------------------------------------------- */
/* Exported types ----------------------------------------------------------- */
typedef struct __packed {
uint8_t sof_1;
uint8_t sof_2;
uint64_t ch_0:11;
uint64_t ch_1:11;
uint64_t ch_2:11;
uint64_t ch_3:11;
uint64_t mode_sw:2;
uint64_t pause:1;
uint64_t fn_1:1;
uint64_t fn_2:1;
uint64_t wheel:11;
uint64_t trigger:1;
int16_t mouse_x;
int16_t mouse_y;
int16_t mouse_z;
uint8_t mouse_left:2;
uint8_t mouse_right:2;
uint8_t mouse_middle:2;
uint16_t key;
uint16_t crc16;
} VT13_RawData_t;
typedef enum {
VT13_SW_ERR = 0,
VT13_SW_UP = 1,
VT13_SW_MID = 3,
VT13_SW_DOWN = 2,
} VT13_SwitchPos_t;
/* 键盘按键值 */
typedef enum {
VT13_KEY_W = 0,
VT13_KEY_S,
VT13_KEY_A,
VT13_KEY_D,
VT13_KEY_SHIFT,
VT13_KEY_CTRL,
VT13_KEY_Q,
VT13_KEY_E,
VT13_KEY_R,
VT13_KEY_F,
VT13_KEY_G,
VT13_KEY_Z,
VT13_KEY_X,
VT13_KEY_C,
VT13_KEY_V,
VT13_KEY_B,
VT13_L_CLICK,
VT13_R_CLICK,
VT13_M_CLICK,
VT13_KEY_NUM,
} VT13_Key_t;
typedef struct {
float ch_l_x; /* 遥控器左侧摇杆横轴值,上为正 */
float ch_l_y; /* 遥控器左侧摇杆纵轴值,右为正 */
float ch_r_x; /* 遥控器右侧摇杆横轴值,上为正 */
float ch_r_y; /* 遥控器右侧摇杆纵轴值,右为正 */
float ch_res; /* 第五通道值 */
VT13_SwitchPos_t sw_r; /* 右侧拨杆位置 */
VT13_SwitchPos_t sw_l; /* 左侧拨杆位置 */
VT13_SwitchPos_t sw_mode; /* 模式拨杆位置 */
VT13_SwitchPos_t sw_pause; /* 暂停拨杆位置 */
VT13_SwitchPos_t sw_trig; /* 扳机位置 */
struct {
int16_t x;
int16_t y;
int16_t z;
bool l_click; /* 左键 */
bool m_click; /* 中键 */
bool r_click; /* 右键 */
} mouse; /* 鼠标值 */
union {
bool key[VT13_KEY_NUM]; /* 键盘按键值 */
uint16_t value; /* 键盘按键值的位映射 */
} keyboard;
uint16_t res; /* 保留,未启用 */
} VT13_Data_t;
typedef struct {
DEVICE_Header_t header;
VT13_RawData_t raw_data;
VT13_Data_t data;
} VT13_t;
/* Exported functions prototypes -------------------------------------------- */
int8_t VT13_Init(VT13_t *VT13);
int8_t VT13_Restart(void);
int8_t VT13_StartDmaRecv(VT13_t *VT13);
bool VT13_WaitDmaCplt(uint32_t timeout);
int8_t VT13_ParseData(VT13_t *VT13);
int8_t VT13_Offline(VT13_t *VT13);
/* USER FUNCTION BEGIN */
/* USER FUNCTION END */
#ifdef __cplusplus
}
#endif

View File

@ -1,123 +1,85 @@
/*
*/
#include <stdint.h>
#include <string.h>
#include "module/cmd.h"
/*************************************************************************************************************************************/
/***************************************************************仲裁器****************************************************************/
/*************************************************************************************************************************************/
/* Includes ----------------------------------------------------------------- */
/* Private typedef ---------------------------------------------------------- */
/* Private define ----------------------------------------------------------- */
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */
/* Private function -------------------------------------------------------- */
static inline bool Cmd_isREFOnline(CMD_t *c){return c->input.ref.online;}
static inline bool Cmd_isNUCOnline(CMD_t *c){return c->input.nuc.online;}
static inline bool Cmd_isRCOnline(CMD_t *c){return c->input.rc.online;}
static inline bool Cmd_isPCOnline(CMD_t *c){return c->input.pc.online;}
CMD_InputSource_t Cmd_GetHighestPrioritySource(CMD_t *c) {
for (int i = 0; i < CMD_SRC_NUM; i++) {
CMD_InputSource_t source = c->params->sourcePriorityConfigs[i].source;
switch (source) {
case CMD_SRC_REF:
if (Cmd_isREFOnline(c)) {
return CMD_SRC_REF;
}
break;
case CMD_SRC_NUC:
if (Cmd_isNUCOnline(c)) {
return CMD_SRC_NUC;
}
break;
case CMD_SRC_RC:
if (Cmd_isRCOnline(c)) {
return CMD_SRC_RC;
}
break;
case CMD_SRC_PC:
if (Cmd_isPCOnline(c)) {
return CMD_SRC_PC;
}
}
}
return CMD_SRC_ERR;
}
int8_t Cmd_Arbiter(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
CMD_InputSource_t source = Cmd_GetHighestPrioritySource(c);
c->output.chassis.source = source;
c->output.gimbal.source = source;
c->output.shoot.source = source;
return CMD_OK;
}
/* Exported functions ------------------------------------------------------- */
#include <stdint.h>
#include <string.h>
#include "bsp/time.h"
#include "device/vt13.h"
#include "module/shoot.h"
/*************************************************************************************************************************************/
/****************************************************************RC*******************************************************************/
/*************************************************************************************************************************************/
/* API ---------------------------------------------------------------------- */
/* Mrobot生成 */
#define RC_SELECT_Index 1
/* 扩展接口 */
#if RC_SELECT_Index == 0
#define FOR_EACH_RC(X) X(dr16, DR16)
#elif RC_SELECT_Index == 1
#define FOR_EACH_RC(X) X(at9s, AT9S)
#if CMD_RCTypeTable_Index == 0
#define CMD_RCType_TABLE(X) X(dr16, DR16)
#elif CMD_RCTypeTable_Index == 1
#define CMD_RCType_TABLE(X) X(at9s, AT9S)
#elif CMD_RCTypeTable_Index == 2
#define CMD_RCType_TABLE(X) X(vt13, VT13)
#endif
/* Includes ----------------------------------------------------------------- */
#if RC_SELECT_Index == 0
#if CMD_RCTypeTable_Index == 0
#include "device/dr16.h"
#elif RC_SELECT_Index == 1
#elif CMD_RCTypeTable_Index == 1
#include "device/at9s_pro.h"
#elif CMD_RCTypeTable_Index == 2
#include "device/vt13.h"
#endif
/* Private macro ------------------------------------------------------------ */
/* 声明外部rc数据变量 */
#define CMDMACRO_EXTERNAL_RCDATA(name, NAME) extern NAME##_t name;
/* 声明CMD结构体的RC数据变量 */
#define CMDMACRO_VAR_RCDATA(name, NAME) NAME##_DataRC_t name;
/* 宏生成Cmd_RC_Get函数内容 */
#define CMDMACRO_Cmd_RC_Get(name, NAME) \
bool online= name.header.online; \
rc_buffer.name= name.data.rc; \
rc->online=online; \
rc->type = CMD_RCTypeTable_Index;
union CMD_RC_Data_t{
CMD_RCType_TABLE(CMDMACRO_VAR_RCDATA)
};
CMD_RCType_TABLE(CMDMACRO_EXTERNAL_RCDATA)
/* Private typedef ---------------------------------------------------------- */
/* Private define ----------------------------------------------------------- */
/* Private macro ------------------------------------------------------------ */
#define RC_X_FIELD_MACRO(name, NAME) DEVICE_##NAME##_t name;
#define RC_X_EXTERN_MACRO(name, NAME) extern DEVICE_##NAME##_t name##_out;
#define RC_X_COPYDEFINE_MACRO(name, NAME) \
static void copy_##name(rc_inputdata_u *dst) { dst->name = name##_out; }
#define RC_X_COPYREFERENCE_MACRO(name, NAME) copy_##name
union rc_inputdata_u{
DEVICE_AT9S_t at9s;
// FOR_EACH_RC(RC_X_FIELD_MACRO)
};
FOR_EACH_RC(RC_X_EXTERN_MACRO)
FOR_EACH_RC(RC_X_COPYDEFINE_MACRO)
/* Private variables -------------------------------------------------------- */
/*静态缓冲区*/
//static rc_inputdata_u rc_buffer;
rc_inputdata_u rc_buffer;
CMD_RC_Data_t rc_buffer;
/* Private function -------------------------------------------------------- */
int8_t Cmd_RC_Get(CMD_Input_RC_t *rc)
{
FOR_EACH_RC(RC_X_COPYREFERENCE_MACRO)(&rc_buffer);
rc->data = &rc_buffer;
rc->online = rc->data->at9s.online;
rc->type = RC_SELECT_Index;
int8_t Cmd_RC_Get(CMD_Input_RC_t *rc){
CMD_RCType_TABLE(CMDMACRO_Cmd_RC_Get);
return CMD_OK;
}
int8_t Cmd_RC_BuildChassisCommandFromInput(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
#if RC_SELECT_Index == 0
c->input_rc.inputData->dr16.data =
#elif RC_SELECT_Index == 1
switch (c->input.rc.data->at9s.data.key_E) {
#if CMD_RCTypeTable_Index == 0
switch (c->input.rc.data->dr16.sw_l) {
case DR16_SW_DOWN:
c->output.chassis.cmd.mode = CHASSIS_MODE_ROTOR;
break;
case DR16_SW_MID:
c->output.chassis.cmd.mode = CHASSIS_MODE_FOLLOW_GIMBAL;
break;
case DR16_SW_UP:
c->output.chassis.cmd.mode = CHASSIS_MODE_BREAK;
break;
default:
c->output.chassis.cmd.mode = CHASSIS_MODE_RELAX;
break;
}
c->output.chassis.cmd.ctrl_vec.vx = c->input.rc.data->dr16.ch_r_x;
c->output.chassis.cmd.ctrl_vec.vy = c->input.rc.data->dr16.ch_r_y;
#elif CMD_RCTypeTable_Index == 1
switch (c->input.rc.data->at9s.key_E) {
case AT9S_CMD_SW_DOWN:
c->output.chassis.cmd.mode = CHASSIS_MODE_RELAX;
break;
@ -131,9 +93,8 @@ int8_t Cmd_RC_BuildChassisCommandFromInput(CMD_t *c) {
c->output.chassis.cmd.mode = CHASSIS_MODE_RELAX;
break;
}
c->output.chassis.cmd.ctrl_vec.vx = c->input.rc.data->at9s.data.ch_l_y;
c->output.chassis.cmd.ctrl_vec.vy = c->input.rc.data->at9s.data.ch_l_x;
c->output.chassis.cmd.ctrl_vec.wz = c->input.rc.data->at9s.data.ch_r_x;
c->output.chassis.cmd.ctrl_vec.vx = c->input.rc.data->at9s.ch_r_x;
c->output.chassis.cmd.ctrl_vec.vy = c->input.rc.data->at9s.ch_r_y;
#endif
return CMD_OK;
}
@ -142,10 +103,31 @@ int8_t Cmd_RC_BuildGimbalCommandFromInput(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
#if RC_SELECT_Index == 0
c->input_rc.input->dr16.data =
#elif RC_SELECT_Index == 1
switch (c->input.rc.data->at9s.data.key_G) {
#if CMD_RCTypeTable_Index == 0
switch (c->input.rc.data->dr16.sw_l) {
case DR16_SW_DOWN:
c->output.gimbal.cmd.mode = GIMBAL_MODE_ABSOLUTE;
c->output.gimbal.cmd.delta_yaw = 0.0f;
c->output.gimbal.cmd.delta_pit = 0.0f;
break;
case DR16_SW_MID:
c->output.gimbal.cmd.mode = GIMBAL_MODE_ABSOLUTE;
c->output.gimbal.cmd.delta_yaw = -c->input.rc.data->dr16.ch_l_x * 2.0f;
c->output.gimbal.cmd.delta_pit = -c->input.rc.data->dr16.ch_l_y * 1.5f;
break;
case DR16_SW_UP:
c->output.gimbal.cmd.mode = GIMBAL_MODE_RELAX;
c->output.gimbal.cmd.delta_yaw = -c->input.rc.data->dr16.ch_l_x * 2.0f;
c->output.gimbal.cmd.delta_pit = -c->input.rc.data->dr16.ch_l_y * 1.5f;
break;
default:
c->output.gimbal.cmd.mode = GIMBAL_MODE_RELAX;
c->output.gimbal.cmd.delta_yaw = 0.0f;
c->output.gimbal.cmd.delta_pit = 0.0f;
break;
}
#elif CMD_RCTypeTable_Index == 1
switch (c->input.rc.data->at9s.key_G) {
case AT9S_CMD_SW_DOWN:
c->output.gimbal.cmd.mode = GIMBAL_MODE_RELAX;
c->output.gimbal.cmd.delta_yaw = 0.0f;
@ -153,13 +135,13 @@ int8_t Cmd_RC_BuildGimbalCommandFromInput(CMD_t *c) {
break;
case AT9S_CMD_SW_MID:
c->output.gimbal.cmd.mode = GIMBAL_MODE_ABSOLUTE;
c->output.gimbal.cmd.delta_yaw = -at9s_out.data.ch_l_x * 2.0f;
c->output.gimbal.cmd.delta_pit = -at9s_out.data.ch_l_y * 1.5f;
c->output.gimbal.cmd.delta_yaw = -c->input.rc.data->at9s.ch_l_x * 2.0f;
c->output.gimbal.cmd.delta_pit = -c->input.rc.data->at9s.ch_l_y * 1.5f;
break;
case AT9S_CMD_SW_UP:
c->output.gimbal.cmd.mode = GIMBAL_MODE_ABSOLUTE;
c->output.gimbal.cmd.delta_yaw = -at9s_out.data.ch_l_x * 2.0f;
c->output.gimbal.cmd.delta_pit = -at9s_out.data.ch_l_y * 1.5f;
c->output.gimbal.cmd.delta_yaw = -c->input.rc.data->at9s.ch_l_x * 2.0f;
c->output.gimbal.cmd.delta_pit = -c->input.rc.data->at9s.ch_l_y * 1.5f;
break;
default:
c->output.gimbal.cmd.mode = GIMBAL_MODE_RELAX;
@ -176,11 +158,34 @@ int8_t Cmd_RC_BuildShootCommandFromInput(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
#if RC_SELECT_Index == 0
c->input_rc.input->dr16.data =
#elif RC_SELECT_Index == 1
c->output.shoot.cmd.online = at9s_out.online;
switch (c->input.rc.data->at9s.data.key_C) {
#if CMD_RCTypeTable_Index == 0
c->output.shoot.cmd.online = c->input.rc.online;
if (c->output.shoot.cmd.online) {
c->output.shoot.cmd.mode=SHOOT_MODE_SINGLE;
} else {
c->output.shoot.cmd.mode=SHOOT_MODE_SAFE;
}
switch (c->input.rc.data->dr16.sw_r) {
case DR16_SW_DOWN:
c->output.shoot.cmd.ready = true;
c->output.shoot.cmd.firecmd = true;
break;
case DR16_SW_MID:
c->output.shoot.cmd.ready = true;
c->output.shoot.cmd.firecmd = false;
break;
case DR16_SW_UP:
c->output.shoot.cmd.ready = false;
c->output.shoot.cmd.firecmd = false;
break;
default:
c->output.shoot.cmd.ready = false;
c->output.shoot.cmd.firecmd = false;
break;
}
#elif CMD_RCTypeTable_Index == 1
c->output.shoot.cmd.online = c->input.rc.online;
switch (c->input.rc.data->at9s.key_C) {
case AT9S_CMD_SW_DOWN:
c->output.shoot.cmd.ready = true;
c->output.shoot.cmd.firecmd = true;
@ -198,7 +203,7 @@ int8_t Cmd_RC_BuildShootCommandFromInput(CMD_t *c) {
c->output.shoot.cmd.firecmd = false;
break;
}
switch (c->input.rc.data->at9s.data.key_D) {
switch (c->input.rc.data->at9s.key_D) {
case AT9S_CMD_SW_DOWN:
c->output.shoot.cmd.mode=SHOOT_MODE_SINGLE;
break;
@ -218,18 +223,9 @@ int8_t Cmd_RC_BuildShootCommandFromInput(CMD_t *c) {
/*************************************************************************************************************************************/
/*****************************************************************PC******************************************************************/
/*************************************************************************************************************************************/
/* Includes ----------------------------------------------------------------- */
/* Private typedef ---------------------------------------------------------- */
typedef int8_t (*CMD_BehaviorFunc)(CMD_t *c);
typedef struct {
CMD_Behavior_t behavior;
CMD_BehaviorFunc func;
} CMD_BehaviorHandlerFunc_t;
/* Private define ----------------------------------------------------------- */
#ifndef CMD_NOPC_FLAG
/* Private macro ------------------------------------------------------------ */
#define PC_MACRO_BEHAVIOR_TABLE(X) \
#define CMD_PCBehavior_TABLE(X) \
X(FORE, CMD_MODULE_CHASSIS) \
X(BACK, CMD_MODULE_CHASSIS) \
X(LEFT, CMD_MODULE_CHASSIS) \
@ -244,28 +240,93 @@ typedef struct {
X(ROTOR, CMD_MODULE_CHASSIS) \
X(REVTRIG, CMD_MODULE_SHOOT) \
X(FOLLOWGIMBAL35, CMD_MODULE_CHASSIS)
/* 函数声明宏 */
#define PC_MACRO_FOR_DECLARE_HANDLER_FUNCTION(BEHAVIOR, MODULE_MASK) \
/* 行为处理函数声明宏 */
#define CMDMACRO_FOR_DECLARE_BEHAVIOR_HANDLER_FUNCTION(BEHAVIOR, MODULE_MASK) \
static int8_t Cmd_PC_HandleBehavior##BEHAVIOR(CMD_t *c);
/* 函数数组构建宏 */
#define PC_MACRO_FOR_BUILD_BEHAVIOR_HANDLER_ARRAY(BEHAVIOR, MODULE_MASK) \
/* 行为处理函数指针数组构建宏 */
#define CMDMACRO_FOR_BUILD_BEHAVIOR_HANDLER_ARRAY(BEHAVIOR, MODULE_MASK) \
{CMD_BEHAVIOR_##BEHAVIOR, Cmd_PC_HandleBehavior##BEHAVIOR},
/* 模块映射表构建宏 */
#define PC_MACRO_FOR_BUILD_MODULE_TABLE(BEHAVIOR, MODULE_MASK) \
/* 行为模块映射表构建宏 */
#define CMDMACRO_FOR_BUILD_MODULE_TABLE(BEHAVIOR, MODULE_MASK) \
[CMD_BEHAVIOR_##BEHAVIOR] = MODULE_MASK,
/* 生成声明 */
PC_MACRO_BEHAVIOR_TABLE(PC_MACRO_FOR_DECLARE_HANDLER_FUNCTION)
/* 行为处理函数声明 */
CMD_PCBehavior_TABLE(CMDMACRO_FOR_DECLARE_BEHAVIOR_HANDLER_FUNCTION)
#define CMDMACRO_VAR_PCDATA(name, NAME) NAME##_DataPC_t name;
/* 宏展开函数内容 */
#define CMDMACRO_Cmd_PC_Get(name, NAME) \
bool online= name.header.online; \
pc_buffer.name= name.data.pc; \
pc->online=online;
#define CMDMACRO_PC_BuildChassisCommandFromInput(name, NAME) \
c->output.chassis.cmd.ctrl_vec.vx = 0.0f; \
c->output.chassis.cmd.ctrl_vec.vy = 0.0f; \
for (size_t i = 0; i < CMD_BEHAVIOR_NUM; i++) { \
CMD_ModuleMask_t moduleMask = behaviorModuleTable[i]; \
if (CMD_PC_IsMaskMatch(c, moduleMask)) { \
if (CMD_PC_IsBehaviorTriggered(c, i)) { \
behaviorHandlerFuncTable[i].func(c); \
} \
} \
}
#define CMDMACRO_PC_BuildGimbalCommandFromInput(name, NAME) \
c->output.gimbal.cmd.mode = GIMBAL_MODE_ABSOLUTE; \
c->output.gimbal.cmd.delta_yaw = (float)c->input.pc.data->name.mouse.x * c->timer.dt * c->params->pc.sensitivity.sens_mouse; \
c->output.gimbal.cmd.delta_pit = (float)c->input.pc.data->name.mouse.y * c->timer.dt * c->params->pc.sensitivity.sens_mouse; \
for (size_t i = 0; i < CMD_BEHAVIOR_NUM; i++) { \
CMD_ModuleMask_t moduleMask = behaviorModuleTable[i]; \
if (CMD_PC_IsMaskMatch(c, moduleMask)) { \
if (CMD_PC_IsBehaviorTriggered(c, i)) { \
behaviorHandlerFuncTable[i].func(c); \
} \
} \
}
#define CMDMACRO_PC_BuildShootCommandFromInput(name, NAME) \
c->output.shoot.cmd.firecmd = false; \
for (size_t i = 0; i < CMD_BEHAVIOR_NUM; i++) { \
CMD_ModuleMask_t moduleMask = behaviorModuleTable[i]; \
if (CMD_PC_IsMaskMatch(c, moduleMask)) { \
if (CMD_PC_IsBehaviorTriggered(c, i)) { \
behaviorHandlerFuncTable[i].func(c); \
} \
} \
} \
memcpy(c->input.pc.lastData->name.keyboard.key, c->input.pc.data->name.keyboard.key, sizeof(c->input.pc.data->name.keyboard.key)); \
c->input.pc.lastData->name.mouse.l_click = c->input.pc.data->name.mouse.l_click; \
c->input.pc.lastData->name.mouse.r_click = c->input.pc.data->name.mouse.r_click;
/* Private typedef ---------------------------------------------------------- */
typedef int8_t (*CMD_BehaviorFunc)(CMD_t *c);
typedef struct {
CMD_Behavior_t behavior;
CMD_BehaviorFunc func;
} CMD_BehaviorHandlerFunc_t;
union CMD_PC_Data_t {
CMD_RCType_TABLE(CMDMACRO_VAR_PCDATA)
};
union CMD_PC_LastData_t {
CMD_RCType_TABLE(CMDMACRO_VAR_PCDATA)
};
/* Private variables -------------------------------------------------------- */
/* 行为处理函数映射表 */
/* 行为处理函数指针数组 */
CMD_BehaviorHandlerFunc_t behaviorHandlerFuncTable[CMD_BEHAVIOR_NUM] = {
PC_MACRO_BEHAVIOR_TABLE(PC_MACRO_FOR_BUILD_BEHAVIOR_HANDLER_ARRAY)
CMD_PCBehavior_TABLE(CMDMACRO_FOR_BUILD_BEHAVIOR_HANDLER_ARRAY)
};
/* 行为模块映射表 */
static const CMD_ModuleMask_t behaviorModuleTable[CMD_BEHAVIOR_NUM] = {
PC_MACRO_BEHAVIOR_TABLE(PC_MACRO_FOR_BUILD_MODULE_TABLE)
CMD_PCBehavior_TABLE(CMDMACRO_FOR_BUILD_MODULE_TABLE)
};
/* 静态缓冲区 */
CMD_PC_Data_t pc_buffer;
CMD_PC_LastData_t pc_lastdata_buffer;
/* Private function -------------------------------------------------------- */
int8_t Cmd_PC_Get(CMD_Input_PC_t *pc){
CMD_RCType_TABLE(CMDMACRO_Cmd_PC_Get);
return CMD_OK;
}
static int8_t Cmd_PC_HandleBehaviorFORE(CMD_t *c){
c->output.chassis.cmd.ctrl_vec.vy += c->params->pc.sensitivity.move_sense;
return CMD_OK;
@ -354,13 +415,6 @@ static inline CMD_TriggerType_t CMD_PC_BehaviorToActive(CMD_t *c,
CMD_Behavior_t behavior) {
return c->params->pc.map.key_map[behavior].trigger_type;
}
extern CMD_PC_Data_t pc_out;
int8_t Cmd_PC_Get(CMD_Input_PC_t *pc)
{
pc->online = false;
// pc->data=pc_out;这里再想想咋写好
return CMD_OK;
}
static inline bool CMD_PC_IsMaskMatch(CMD_t *c, CMD_ModuleMask_t module_mask) {
/* 构建当前各模块输入源状态的掩码 */
@ -383,15 +437,15 @@ static inline bool CMD_PC_IsBehaviorTriggered(CMD_t *c, CMD_Behavior_t behavior)
/* 按下按键为鼠标左、右键 */
if (value == CMD_L_CLICK) {
now_key_pressed = c->input.pc.data.mouse.l_click;
last_key_pressed = c->input.pc.lastData.mouse.l_click;
now_key_pressed = c->input.pc.data->dr16.mouse.l_click;
last_key_pressed = c->input.pc.lastData->dr16.mouse.l_click;
} else if (value == CMD_R_CLICK) {
now_key_pressed = c->input.pc.data.mouse.r_click;
last_key_pressed = c->input.pc.lastData.mouse.r_click;
now_key_pressed = c->input.pc.data->dr16.mouse.r_click;
last_key_pressed = c->input.pc.lastData->dr16.mouse.r_click;
} else {
/* 直接用布尔值 */
now_key_pressed = c->input.pc.data.keyboard.key[value] & (1u << value);
last_key_pressed = c->input.pc.lastData.keyboard.key[value] & (1u << value);
now_key_pressed = c->input.pc.data->dr16.keyboard.key[value];
last_key_pressed = c->input.pc.lastData->dr16.keyboard.key[value];
/* 或者用位掩码 */
// now_key_pressed = c->input.pc.data.keyboard.bitmask & (1u << value);
// last_key_pressed = c->input.pc.lastData.keyboard.bitmask & (1u << value);
@ -412,15 +466,16 @@ static int8_t Cmd_PC_BuildChassisCommandFromInput(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
c->output.chassis.cmd.ctrl_vec.vx = c->output.chassis.cmd.ctrl_vec.vy = 0.0f;
for (size_t i = 0; i < CMD_BEHAVIOR_NUM; i++) {
CMD_ModuleMask_t moduleMask = behaviorModuleTable[i];
if (CMD_PC_IsMaskMatch(c, moduleMask)) {
if (CMD_PC_IsBehaviorTriggered(c, i)) {
behaviorHandlerFuncTable[i].func(c);
}
}
}
// c->output.chassis.cmd.ctrl_vec.vx = c->output.chassis.cmd.ctrl_vec.vy = 0.0f;
// for (size_t i = 0; i < CMD_RCType_TABLE(CMDMACRO_KEYNUM); i++) {
// CMD_ModuleMask_t moduleMask = behaviorModuleTable[i];
// if (CMD_PC_IsMaskMatch(c, moduleMask)) {
// if (CMD_PC_IsBehaviorTriggered(c, i)) {
// behaviorHandlerFuncTable[i].func(c);
// }
// }
// }
CMD_RCType_TABLE(CMDMACRO_PC_BuildChassisCommandFromInput);
return CMD_OK;
}
@ -428,17 +483,18 @@ static int8_t Cmd_PC_BuildGimbalCommandFromInput(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
c->output.gimbal.cmd.mode = GIMBAL_MODE_ABSOLUTE;
c->output.gimbal.cmd.delta_yaw = (float)c->input.pc.data.mouse.x * c->timer.dt * c->params->pc.sensitivity.sens_mouse;
c->output.gimbal.cmd.delta_pit = (float)c->input.pc.data.mouse.y * c->timer.dt * c->params->pc.sensitivity.sens_mouse;
for (size_t i = 0; i < CMD_BEHAVIOR_NUM; i++) {
CMD_ModuleMask_t moduleMask = behaviorModuleTable[i];
if (CMD_PC_IsMaskMatch(c, moduleMask)) {
if (CMD_PC_IsBehaviorTriggered(c, i)) {
behaviorHandlerFuncTable[i].func(c);
}
}
}
// c->output.gimbal.cmd.mode = GIMBAL_MODE_ABSOLUTE;
// c->output.gimbal.cmd.delta_yaw = (float)c->input.pc.data->dr16.mouse.x * c->timer.dt * c->params->pc.sensitivity.sens_mouse;
// c->output.gimbal.cmd.delta_pit = (float)c->input.pc.data->dr16.mouse.y * c->timer.dt * c->params->pc.sensitivity.sens_mouse;
// for (size_t i = 0; i < CMD_RCType_TABLE(CMDMACRO_KEYNUM); i++) {
// CMD_ModuleMask_t moduleMask = behaviorModuleTable[i];
// if (CMD_PC_IsMaskMatch(c, moduleMask)) {
// if (CMD_PC_IsBehaviorTriggered(c, i)) {
// behaviorHandlerFuncTable[i].func(c);
// }
// }
// }
CMD_RCType_TABLE(CMDMACRO_PC_BuildGimbalCommandFromInput);
return CMD_OK;
}
@ -446,21 +502,48 @@ static int8_t Cmd_PC_BuildShootCommandFromInput(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
c->output.shoot.cmd.firecmd = false;
for (size_t i = 0; i < CMD_BEHAVIOR_NUM; i++) {
CMD_ModuleMask_t moduleMask = behaviorModuleTable[i];
if (CMD_PC_IsMaskMatch(c, moduleMask)) {
if (CMD_PC_IsBehaviorTriggered(c, i)) {
behaviorHandlerFuncTable[i].func(c);
}
}
}
memcpy(c->input.pc.lastData.keyboard.key, c->input.pc.data.keyboard.key, sizeof(c->input.pc.data.keyboard.key));
c->input.pc.lastData.mouse.l_click = c->input.pc.data.mouse.l_click;
c->input.pc.lastData.mouse.r_click = c->input.pc.data.mouse.r_click;
// c->output.shoot.cmd.firecmd = false;
// for (size_t i = 0; i < CMD_RCType_TABLE(CMDMACRO_KEYNUM); i++) {
// CMD_ModuleMask_t moduleMask = behaviorModuleTable[i];
// if (CMD_PC_IsMaskMatch(c, moduleMask)) {
// if (CMD_PC_IsBehaviorTriggered(c, i)) {
// behaviorHandlerFuncTable[i].func(c);
// }
// }
// }
// memcpy(c->input.pc.lastData->dr16.keyboard.key, c->input.pc.data->dr16.keyboard.key, sizeof(c->input.pc.data->dr16.keyboard.key));
// c->input.pc.lastData->dr16.mouse.l_click = c->input.pc.data->dr16.mouse.l_click;
// c->input.pc.lastData->dr16.mouse.r_click = c->input.pc.data->dr16.mouse.r_click;
CMD_RCType_TABLE(CMDMACRO_PC_BuildShootCommandFromInput);
return CMD_OK;
}
/* Exported functions ------------------------------------------------------- */
#else
static int8_t Cmd_PC_Get(CMD_Input_PC_t *pc) {
pc->online=false;
return CMD_OK;
}
static int8_t Cmd_PC_BuildChassisCommandFromInput(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
return CMD_OK;
}
static int8_t Cmd_PC_BuildGimbalCommandFromInput(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
return CMD_OK;
}
static int8_t Cmd_PC_BuildShootCommandFromInput(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
return CMD_OK;
}
#endif
/*************************************************************************************************************************************/
/****************************************************************NUC******************************************************************/
@ -539,9 +622,73 @@ int8_t Cmd_REF_BuildShootCommandFromInput(CMD_t *c) {
return CMD_OK;
}
/*************************************************************************************************************************************/
/***************************************************************仲裁器****************************************************************/
/*************************************************************************************************************************************/
/* Includes ----------------------------------------------------------------- */
/* Private typedef ---------------------------------------------------------- */
/* Private define ----------------------------------------------------------- */
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */
/* Private function -------------------------------------------------------- */
static inline bool Cmd_isREFOnline(CMD_t *c){return c->input.ref.online;}
static inline bool Cmd_isNUCOnline(CMD_t *c){return c->input.nuc.online;}
static inline bool Cmd_isRCOnline(CMD_t *c){return c->input.rc.online;}
static inline bool Cmd_isPCOnline(CMD_t *c){return c->input.pc.online;}
CMD_InputSource_t Cmd_GetHighestPrioritySource(CMD_t *c) {
for (int i = 0; i < CMD_SRC_NUM; i++) {
CMD_InputSource_t source = c->params->sourcePriorityConfigs[i].source;
switch (source) {
case CMD_SRC_REF:
if (Cmd_isREFOnline(c)) {
return CMD_SRC_REF;
}
break;
case CMD_SRC_NUC:
if (Cmd_isNUCOnline(c)) {
return CMD_SRC_NUC;
}
break;
case CMD_SRC_RC:
if (Cmd_isRCOnline(c)) {
return CMD_SRC_RC;
}
break;
case CMD_SRC_PC:
if (Cmd_isPCOnline(c)) {
return CMD_SRC_PC;
}
}
}
return CMD_SRC_ERR;
}
int8_t Cmd_Arbiter(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
CMD_InputSource_t source = Cmd_GetHighestPrioritySource(c);
c->output.chassis.source = source;
c->output.gimbal.source = source;
c->output.shoot.source = source;
return CMD_OK;
}
int8_t Cmd_Switch_RCorPC(CMD_t *c) {
if (c == NULL) {
return CMD_ERR_NULL; // 参数错误
}
return CMD_OK;
}
/*************************************************************************************************************************************/
/***************************************************************分发命令***************************************************************/
/***************************************************************主结构*****************************************************************/
/*************************************************************************************************************************************/
/* Includes ----------------------------------------------------------------- */
@ -553,8 +700,6 @@ typedef struct {
CMD_BuildCommandFunc gimbalFunc;
CMD_BuildCommandFunc shootFunc;
} CMD_SourceHandler_t;
/* Private define ----------------------------------------------------------- */
#include "bsp/time.h"
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */
CMD_SourceHandler_t sourceHandlers[CMD_SRC_NUM] = {
@ -571,6 +716,7 @@ int8_t Cmd_OFFLINE(CMD_t *c) {
c->output.chassis.cmd.mode =CHASSIS_MODE_RELAX;
c->output.gimbal.cmd.mode =GIMBAL_MODE_RELAX;
c->output.shoot.cmd.mode =SHOOT_MODE_SAFE;
return CMD_OK;
}
/* Exported functions ------------------------------------------------------- */
int8_t Cmd_Init(CMD_t *c, CMD_Params_t *params) {
@ -579,6 +725,11 @@ int8_t Cmd_Init(CMD_t *c, CMD_Params_t *params) {
return CMD_ERR_NULL; // 参数错误
}
c->params = params;
c->input.rc.data=&rc_buffer;
#ifndef CMD_NOPC_FLAG
c->input.pc.lastData=&pc_lastdata_buffer;
c->input.pc.data=&pc_buffer;
#endif
return CMD_OK;
}

View File

@ -19,9 +19,14 @@ extern "C" {
#define CMD_ERR_ERR (-2) /* 运行时发现了其他错误 */
#define CMD_ERR_SOURCE (-3) /* 运行时配置了不存在的输入源 */
/* Exported macro ----------------------------------------------------------- */
#define CMD_RCTypeTable_Index 0 /* 0:DR16 1:AT9S 2:VT13 */
#if CMD_RCTypeTable_Index == 1
#define CMD_NOPC_FLAG
#endif
/* Exported types ----------------------------------------------------------- */
typedef union rc_inputdata_u rc_inputdata_u;
typedef union CMD_RC_Data_t CMD_RC_Data_t;
#define CMD_REFEREE_MAX_NUM (3) /* 发送命令限定的最大数量 */
@ -39,8 +44,8 @@ typedef enum {
typedef struct {
bool online;
enum {DR16=0, AT9S} type;
rc_inputdata_u *data;
} CMD_Input_RC_t;
CMD_RC_Data_t *data;
} CMD_Input_RC_t;//或者这里直接把CMD_Input_RC_t前向声明了看哪个好看
/* RC part end---------------------------------------- */
@ -74,7 +79,6 @@ typedef enum {
CMD_R_CLICK,
CMD_KEY_NUM,
} CMD_PCValue_t;
typedef enum {
CMD_ACTIVE_RISING_EDGE, /* 按下时触发 */
CMD_ACTIVE_FALLING_EDGE, /* 抬起时触发 */
@ -116,43 +120,24 @@ typedef struct {
float move_slow_sense; /* 慢速移动灵敏度 */
} CMD_PC_Sensitivity_t;
typedef struct {
bool online;
struct {
int16_t x;
int16_t y;
int16_t z;
bool l_click; /* 左键 */
bool r_click; /* 右键 */
} mouse; /* 鼠标值 */
union {
bool key[CMD_KEY_NUM]; /* 键盘按键值 */
uint16_t bitmask; /* 键盘按键值的位映射 */
} keyboard;
} CMD_PC_Data_t;
typedef struct {
struct {
bool l_click; /* 左键 */
bool r_click; /* 右键 */
} mouse; /* 鼠标值 */
union {
bool key[CMD_KEY_NUM]; /* 键盘按键值 */
uint16_t bitmask; /* 键盘按键值的位映射 */
} keyboard;
} CMD_PC_LastData_t;
typedef struct {
bool online;
CMD_PC_Data_t data;
CMD_PC_LastData_t lastData;
}CMD_Input_PC_t;
typedef struct {
CMD_KeyMap_Params_t map; /* 按键映射行为命令 */
CMD_PC_Sensitivity_t sensitivity; /* PC灵敏度设置 */
}CMD_PCParams_t;
#ifndef CMD_NOPC_FLAG
typedef union CMD_PC_Data_t CMD_PC_Data_t;
typedef union CMD_PC_LastData_t CMD_PC_LastData_t;
typedef struct {
bool online;
CMD_PC_Data_t *data;
CMD_PC_LastData_t *lastData;
}CMD_Input_PC_t;
#else
typedef struct {
bool online;
}CMD_Input_PC_t;
#endif
/* PC part end---------------------------------------- */
/* NUC part begin------------------------------------- */

View File

@ -142,7 +142,7 @@ Config_RobotParam_t robot_config = {
},
.travel = {
.yaw = -1.0f,
.pit = 0.85367393f,
.pit = 0.6,
},
.low_pass_cutoff_freq = {
.out = -1.0f,
@ -172,7 +172,6 @@ Config_RobotParam_t robot_config = {
.num_trig_tooth=5,
.shot_freq=1.0f,
.shot_burst_num=3,
.num_multilevel=2,
.ratio_multilevel = {0.8f, 1.0f},
},
.jamDetection={
@ -237,7 +236,7 @@ Config_RobotParam_t robot_config = {
.can = BSP_CAN_2,
.id = 0x206,
.module = MOTOR_M3508,
.reverse = false,
.reverse = true,
.gear = false,
},
.level=2,
@ -253,23 +252,23 @@ Config_RobotParam_t robot_config = {
},
.pid={
.fric_follow = {
.k=0.2f,//1
.p=1.8f,
.i=0.1f,
.d=0.05f,
.i_limit=0.1f,
.k=1.0f,
.p=1.5f,
.i=0.3f,
.d=0.0f,
.i_limit=0.2f,
.out_limit=0.9f,
.d_cutoff_freq=30.0f,
.d_cutoff_freq=-1.0f,
.range=-1.0f,
},
.fric_err = {
.k=0.0f,
.p=4.0f,
.i=0.4f,
.d=0.04f,
.d=0.0f,
.i_limit=0.25f,
.out_limit=0.01f,
.d_cutoff_freq=40.0f,
.out_limit=0.25f,
.d_cutoff_freq=-1.0f,
.range=-1.0f,
},
.trig_2006 = {
@ -347,10 +346,10 @@ Config_RobotParam_t robot_config = {
},
.pc.sensitivity={
.move_sense=1.0f,
.sens_mouse=0.002f,
.move_fast_sense=2.0f,
.move_slow_sense=0.5f
.move_sense=1.6f,
.sens_mouse=0.06f,
.move_fast_sense=2.4f,
.move_slow_sense=0.8f
},

View File

@ -50,7 +50,7 @@ static int8_t Gimbal_SetMode(Gimbal_t *g, Gimbal_Mode_t mode) {
// }
// }
g->setpoint.eulr.pit = g->feedback.motor.pit.rotor_abs_angle;
g->setpoint.eulr.yaw = g->feedback.imu.eulr.yaw;
g->setpoint.eulr.yaw = g->feedback.motor.yaw.rotor_abs_angle;
g->mode = mode;
return 0;
@ -67,7 +67,7 @@ static int8_t Gimbal_SetMode(Gimbal_t *g, Gimbal_Mode_t mode) {
*
* \return
*/
int8_t Gimbal_Init(Gimbal_t *g, const Gimbal_Params_t *param,
int8_t Gimbal_Init(Gimbal_t *g, Gimbal_Params_t *param,
float target_freq) {
if (g == NULL)
return -1;
@ -165,7 +165,7 @@ int8_t Gimbal_Control(Gimbal_t *g, Gimbal_CMD_t *g_cmd) {
float delta_yaw = g_cmd->delta_yaw * g->dt * 1.5f;
if (g->param->travel.yaw > 0) {
/* 计算当前电机角度与IMU角度的偏差 */
float motor_imu_offset = g->feedback.motor.yaw.rotor_abs_angle - g->feedback.imu.eulr.yaw;
float motor_imu_offset = g->feedback.motor.yaw.rotor_abs_angle - g->feedback.motor.yaw.rotor_abs_angle;
/* 处理跨越±π的情况 */
if (motor_imu_offset > M_PI) motor_imu_offset -= M_2PI;
if (motor_imu_offset < -M_PI) motor_imu_offset += M_2PI;
@ -214,7 +214,7 @@ int8_t Gimbal_Control(Gimbal_t *g, Gimbal_CMD_t *g_cmd) {
case GIMBAL_MODE_ABSOLUTE:
yaw_omega_set_point = PID_Calc(&(g->pid.yaw_angle), g->setpoint.eulr.yaw,
g->feedback.imu.eulr.yaw, 0.0f, g->dt);
g->feedback.motor.yaw.rotor_abs_angle, 0.0f, g->dt);
g->out.yaw = PID_Calc(&(g->pid.pit_omega), yaw_omega_set_point,
g->feedback.imu.gyro.z, 0.f, g->dt);

View File

@ -141,7 +141,7 @@ typedef struct {
*
* \return
*/
int8_t Gimbal_Init(Gimbal_t *g, const Gimbal_Params_t *param,
int8_t Gimbal_Init(Gimbal_t *g, Gimbal_Params_t *param,
float target_freq);
/**

View File

@ -31,6 +31,7 @@ void Task(void *argument) {
/* Includes ----------------------------------------------------------------- */
#include <math.h>
#include <string.h>
#include "shoot.h"
#include "bsp/mm.h"
@ -58,7 +59,6 @@ int8_t Shoot_SetMode(Shoot_t *s, Shoot_Mode_t mode)
return SHOOT_ERR_NULL; // 参数错误
}
s->mode=mode;
s->anglecalu.num_toShoot=0;
return SHOOT_OK;
}
@ -189,21 +189,54 @@ int8_t Shoot_CaluTargetRPM(Shoot_t *s, float target_speed)
*/
int8_t Shoot_CaluTargetAngle(Shoot_t *s, Shoot_CMD_t *cmd)
{
if (s == NULL || s->anglecalu.num_toShoot == 0) {
if (s == NULL || s->var_trig.num_toShoot == 0) {
return SHOOT_ERR_NULL;
}
float dt = s->timer.now - s->anglecalu.time_lastShoot;
float dt = s->timer.now - s->var_trig.time_lastShoot;
float dpos;
dpos = CircleError(s->target_variable.trig_angle, s->feedback.trig_agl, M_2PI);
dpos = CircleError(s->target_variable.trig_angle, s->var_trig.trig_agl, M_2PI);
if(dt >= 1.0f/s->param->basic.shot_freq && cmd->firecmd && dpos<=1.0f)
{
s->anglecalu.time_lastShoot=s->timer.now;
s->var_trig.time_lastShoot=s->timer.now;
CircleAdd(&s->target_variable.trig_angle, M_2PI/s->param->basic.num_trig_tooth, M_2PI);
s->anglecalu.num_toShoot--;
s->var_trig.num_toShoot--;
}
return SHOOT_OK;
}
static float Shoot_CaluCoupledWeight(Shoot_t *s, uint8_t fric_index)
{
if (s == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
float Threshold;
switch (s->param->basic.projectileType) {
case SHOOT_PROJECTILE_17MM:
Threshold=50.0f;
break;
case SHOOT_PROJECTILE_42MM:
Threshold=400.0f;
break;
default:
return 0.0f;
}
float err;
err=fabs((s->param->basic.ratio_multilevel[fric_index]
*s->target_variable.fric_rpm)
-s->feedback.fric[fric_index].rotor_speed);
if (err<Threshold)
{
s->var_fric.coupled_control_weights=1.0f-(err*err)/(Threshold*Threshold);
}
else
{
s->var_fric.coupled_control_weights=0.0f;
}
return s->var_fric.coupled_control_weights;
}
/**
* \brief
*
@ -216,7 +249,6 @@ int8_t Shoot_UpdateFeedback(Shoot_t *s)
if (s == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
float rpm_sum=0.0f;
uint8_t fric_num = s->param->basic.fric_num;
for(int i = 0; i < fric_num; i++) {
/* 更新摩擦轮电机反馈 */
@ -227,28 +259,31 @@ int8_t Shoot_UpdateFeedback(Shoot_t *s)
s->feedback.fric[i]=motor_fed->motor.feedback;
}
/* 滤波摩擦轮电机转速反馈 */
s->feedback.fil_fric_rpm[i] = LowPassFilter2p_Apply(&s->filter.fric.in[i], s->feedback.fric[i].rotor_speed);
s->var_fric.fil_rpm[i] = LowPassFilter2p_Apply(&s->filter.fric.in[i], s->feedback.fric[i].rotor_speed);
/* 归一化摩擦轮电机转速反馈 */
s->feedback.fric_rpm[i] = s->feedback.fil_fric_rpm[i] / MAX_FRIC_RPM;
if(s->feedback.fric_rpm[i]>1.0f)s->feedback.fric_rpm[i]=1.0f;
if(s->feedback.fric_rpm[i]<-1.0f)s->feedback.fric_rpm[i]=-1.0f;
s->var_fric.normalized_fil_rpm[i] = s->var_fric.fil_rpm[i] / MAX_FRIC_RPM;
if(s->var_fric.normalized_fil_rpm[i]>1.0f)s->var_fric.normalized_fil_rpm[i]=1.0f;
if(s->var_fric.normalized_fil_rpm[i]<-1.0f)s->var_fric.normalized_fil_rpm[i]=-1.0f;
/* 计算平均摩擦轮电机转速反馈 */
rpm_sum+=s->feedback.fric_rpm[i];
s->var_fric.normalized_fil_avgrpm[s->param->motor.fric[i].level-1]+=s->var_fric.normalized_fil_rpm[i];
}
for (int i=1; i<MAX_NUM_MULTILEVEL; i++)
{
s->var_fric.normalized_fil_avgrpm[i]=s->var_fric.normalized_fil_avgrpm[i]/fric_num/MAX_NUM_MULTILEVEL;
}
s->feedback.fric_avgrpm=rpm_sum/fric_num;
/* 更新拨弹电机反馈 */
MOTOR_RM_Update(&s->param->motor.trig);
s->feedback.trig = *MOTOR_RM_GetMotor(&s->param->motor.trig);
s->feedback.trig_agl=s->param->basic.extra_deceleration_ratio*s->feedback.trig.gearbox_total_angle;
while(s->feedback.trig_agl<0)s->feedback.trig_agl+=M_2PI;
while(s->feedback.trig_agl>=M_2PI)s->feedback.trig_agl-=M_2PI;
s->var_trig.trig_agl=s->param->basic.extra_deceleration_ratio*s->feedback.trig.gearbox_total_angle;
while(s->var_trig.trig_agl<0)s->var_trig.trig_agl+=M_2PI;
while(s->var_trig.trig_agl>=M_2PI)s->var_trig.trig_agl-=M_2PI;
if (s->feedback.trig.motor.reverse) {
s->feedback.trig_agl = M_2PI - s->feedback.trig_agl;
s->var_trig.trig_agl = M_2PI - s->var_trig.trig_agl;
}
s->feedback.fil_trig_rpm = LowPassFilter2p_Apply(&s->filter.trig.in, s->feedback.trig.feedback.rotor_speed);
s->feedback.trig_rpm = s->feedback.trig.feedback.rotor_speed / MAX_TRIG_RPM;
if(s->feedback.trig_rpm>1.0f)s->feedback.trig_rpm=1.0f;
if(s->feedback.trig_rpm<-1.0f)s->feedback.trig_rpm=-1.0f;
s->var_trig.fil_trig_rpm = LowPassFilter2p_Apply(&s->filter.trig.in, s->feedback.trig.feedback.rotor_speed);
s->var_trig.trig_rpm = s->feedback.trig.feedback.rotor_speed / MAX_TRIG_RPM;
if(s->var_trig.trig_rpm>1.0f)s->var_trig.trig_rpm=1.0f;
if(s->var_trig.trig_rpm<-1.0f)s->var_trig.trig_rpm=-1.0f;
s->errtosee = s->feedback.fric[0].rotor_speed - s->feedback.fric[1].rotor_speed;
return SHOOT_OK;
@ -268,7 +303,7 @@ int8_t Shoot_RunningFSM(Shoot_t *s, Shoot_CMD_t *cmd)
return SHOOT_ERR_NULL; // 参数错误
}
uint8_t fric_num = s->param->basic.fric_num;
if(!s->online /*|| s->mode==SHOOT_MODE_SAFE*/){
if(!s->online || s->mode==SHOOT_MODE_SAFE){
for(int i=0;i<fric_num;i++)
{
MOTOR_RM_Relax(&s->param->motor.fric[i].param);
@ -283,14 +318,14 @@ int8_t Shoot_RunningFSM(Shoot_t *s, Shoot_CMD_t *cmd)
for(int i=0;i<fric_num;i++)
{ /* 转速归零 */
PID_ResetIntegral(&s->pid.fric_follow[i]);
s->output.out_follow[i]=PID_Calc(&s->pid.fric_follow[i],0.0f,s->feedback.fric_rpm[i],0,s->timer.dt);
s->output.out_follow[i]=PID_Calc(&s->pid.fric_follow[i],0.0f,s->var_fric.normalized_fil_rpm[i],0,s->timer.dt);
s->output.out_fric[i]=s->output.out_follow[i];
s->output.lpfout_fric[i] = LowPassFilter2p_Apply(&s->filter.fric.out[i], s->output.out_fric[i]);
MOTOR_RM_SetOutput(&s->param->motor.fric[i].param, s->output.lpfout_fric[i]);
}
s->output.outagl_trig =PID_Calc(&s->pid.trig,pos,s->feedback.trig_agl,0,s->timer.dt);
s->output.outomg_trig =PID_Calc(&s->pid.trig_omg,s->output.outagl_trig,s->feedback.trig_rpm,0,s->timer.dt);
s->output.outagl_trig =PID_Calc(&s->pid.trig,pos,s->var_trig.trig_agl,0,s->timer.dt);
s->output.outomg_trig =PID_Calc(&s->pid.trig_omg,s->output.outagl_trig,s->var_trig.trig_rpm,0,s->timer.dt);
s->output.outlpf_trig =LowPassFilter2p_Apply(&s->filter.trig.out, s->output.outomg_trig);
MOTOR_RM_SetOutput(&s->param->motor.trig, s->output.outlpf_trig);
@ -307,18 +342,20 @@ int8_t Shoot_RunningFSM(Shoot_t *s, Shoot_CMD_t *cmd)
case SHOOT_STATE_READY:/*准备射击*/
for(int i=0;i<fric_num;i++)
{
uint8_t level=s->param->motor.fric->level-1;
float fric_rpm=s->param->basic.ratio_multilevel[level]*s->target_variable.fric_rpm/MAX_FRIC_RPM;
/* 计算跟随输出、计算修正输出 */
a=s->target_variable.fric_rpm/MAX_FRIC_RPM;
uint8_t level=s->param->motor.fric[i].level-1;
float target_rpm=s->param->basic.ratio_multilevel[level]
*s->target_variable.fric_rpm/MAX_FRIC_RPM;
/* 计算耦合控制权重 */
float w=Shoot_CaluCoupledWeight(s,i);
/* 计算跟随输出、计算修正输出 */
s->output.out_follow[i]=PID_Calc(&s->pid.fric_follow[i],
fric_rpm,
s->feedback.fric_rpm[i],
target_rpm,
s->var_fric.normalized_fil_rpm[i],
0,
s->timer.dt);
s->output.out_err[i]=PID_Calc(&s->pid.fric_err[i],
s->feedback.fric_avgrpm,
s->feedback.fric_rpm[i],
s->output.out_err[i]=w*PID_Calc(&s->pid.fric_err[i],
s->var_fric.normalized_fil_avgrpm[s->param->motor.fric[i].level-1],
s->var_fric.normalized_fil_rpm[i],
0,
s->timer.dt);
/* 按比例缩放并加和输出 */
@ -332,12 +369,12 @@ int8_t Shoot_RunningFSM(Shoot_t *s, Shoot_CMD_t *cmd)
/* 设置拨弹电机输出 */
s->output.outagl_trig =PID_Calc(&s->pid.trig,
pos,
s->feedback.trig_agl,
s->var_trig.trig_agl,
0,
s->timer.dt);
s->output.outomg_trig =PID_Calc(&s->pid.trig_omg,
s->output.outagl_trig,
s->feedback.trig_rpm,
s->var_trig.trig_rpm,
0,
s->timer.dt);
s->output.outlpf_trig =LowPassFilter2p_Apply(&s->filter.trig.out, s->output.outomg_trig);
@ -357,16 +394,16 @@ int8_t Shoot_RunningFSM(Shoot_t *s, Shoot_CMD_t *cmd)
switch(s->mode)
{
case SHOOT_MODE_SINGLE:
s->anglecalu.num_toShoot=1;
s->var_trig.num_toShoot=1;
break;
case SHOOT_MODE_BURST:
s->anglecalu.num_toShoot=s->param->basic.shot_burst_num;
s->var_trig.num_toShoot=s->param->basic.shot_burst_num;
break;
case SHOOT_MODE_CONTINUE:
s->anglecalu.num_toShoot=6666;
s->var_trig.num_toShoot=6666;
break;
default:
s->anglecalu.num_toShoot=0;
s->var_trig.num_toShoot=0;
break;
}
}
@ -376,17 +413,20 @@ int8_t Shoot_RunningFSM(Shoot_t *s, Shoot_CMD_t *cmd)
Shoot_CaluTargetAngle(s, cmd);
for(int i=0;i<fric_num;i++)
{
uint8_t level=s->param->motor.fric->level-1;
float fric_rpm=s->param->basic.ratio_multilevel[level]*s->target_variable.fric_rpm/MAX_FRIC_RPM;
/* 计算跟随输出、计算修正输出 */
uint8_t level=s->param->motor.fric[i].level-1;
float target_rpm=s->param->basic.ratio_multilevel[level]
*s->target_variable.fric_rpm/MAX_FRIC_RPM;
/* 计算耦合控制权重 */
float w=Shoot_CaluCoupledWeight(s,i);
/* 计算跟随输出、计算修正输出 */
s->output.out_follow[i]=PID_Calc(&s->pid.fric_follow[i],
fric_rpm,
s->feedback.fric_rpm[i],
target_rpm,
s->var_fric.normalized_fil_rpm[i],
0,
s->timer.dt);
s->output.out_err[i]=PID_Calc(&s->pid.fric_err[i],
s->feedback.fric_avgrpm,
s->feedback.fric_rpm[i],
s->output.out_err[i]=w*PID_Calc(&s->pid.fric_err[i],
s->var_fric.normalized_fil_avgrpm[s->param->motor.fric[i].level-1],
s->var_fric.normalized_fil_rpm[i],
0,
s->timer.dt);
/* 按比例缩放并加和输出 */
@ -400,12 +440,12 @@ int8_t Shoot_RunningFSM(Shoot_t *s, Shoot_CMD_t *cmd)
/* 设置拨弹电机输出 */
s->output.outagl_trig =PID_Calc(&s->pid.trig,
s->target_variable.trig_angle,
s->feedback.trig_agl,
s->var_trig.trig_agl,
0,
s->timer.dt);
s->output.outomg_trig =PID_Calc(&s->pid.trig_omg,
s->output.outagl_trig,
s->feedback.trig_rpm,
s->var_trig.trig_rpm,
0,
s->timer.dt);
s->output.outlpf_trig =LowPassFilter2p_Apply(&s->filter.trig.out, s->output.outomg_trig);
@ -415,7 +455,8 @@ int8_t Shoot_RunningFSM(Shoot_t *s, Shoot_CMD_t *cmd)
if(!cmd->firecmd)
{
s->running_state=SHOOT_STATE_READY;
pos=s->feedback.trig_agl;
pos=s->var_trig.trig_agl;
s->var_trig.num_toShoot=0;
}
break;
@ -476,9 +517,9 @@ int8_t Shoot_JamDetectionFSM(Shoot_t *s, Shoot_CMD_t *cmd)
break;
case SHOOT_JAMFSM_STATE_CONFIRMED:/* 确认堵塞 */
/* 清空待发射弹 */
s->anglecalu.num_toShoot=0;
s->var_trig.num_toShoot=0;
/* 修改拨弹盘目标角度 */
s->target_variable.trig_angle = s->feedback.trig_agl-(M_2PI/s->param->basic.num_trig_tooth);
s->target_variable.trig_angle = s->var_trig.trig_agl-(M_2PI/s->param->basic.num_trig_tooth);
/* 切换状态 */
s->jamdetection.fsmState = SHOOT_JAMFSM_STATE_DEAL;
/* 记录处理开始时间 */
@ -576,7 +617,7 @@ int8_t Shoot_Init(Shoot_t *s, Shoot_Params_t *param, float target_freq)
s->param->filter.trig.out);
/* 归零变量 */
memset(&s->anglecalu,0,sizeof(s->anglecalu));
memset(&s->var_trig,0,sizeof(s->var_trig));
return SHOOT_OK;
}
@ -597,7 +638,7 @@ int8_t Shoot_Control(Shoot_t *s, Shoot_CMD_t *cmd)
s->timer.dt = (BSP_TIME_Get_us() - s->timer.lask_wakeup) / 1000000.0f;
s->timer.lask_wakeup = BSP_TIME_Get_us();
s->online = cmd->online;
// Shoot_CaluTargetRPM(s,233);
Shoot_CaluTargetRPM(s,233);
Shoot_JamDetectionFSM(s, cmd);
// Shoot_CalufeedbackRPM(s);

View File

@ -21,7 +21,7 @@ extern "C" {
#define SHOOT_ERR_MALLOC (-5) /* 内存分配失败 */
#define MAX_FRIC_RPM 7000.0f
#define MAX_TRIG_RPM 5000.0f//这里可能也会影响最高发射频率,待测试
#define MAX_TRIG_RPM 2000.0f//这里可能也会影响最高发射频率,待测试
#define MAX_FRIC_NUM 6
#define MAX_NUM_MULTILEVEL 2 /* 多级发射级数 */
@ -60,20 +60,27 @@ typedef struct{
typedef struct {
MOTOR_Feedback_t fric[MAX_FRIC_NUM];/* 摩擦轮电机反馈 */
MOTOR_RM_t trig; /* 拨弹电机反馈 */
float trig_agl; /*计算所有减速比后的拨弹盘的角度*/
float fil_fric_rpm[MAX_FRIC_NUM]; /* 滤波后的摩擦轮转速 */
float fil_trig_rpm; /* 滤波后的拨弹电机转速*/
float fric_rpm[MAX_FRIC_NUM]; /* 归一化摩擦轮转速 */
float fric_avgrpm; /* 归一化摩擦轮平均转速 */
float trig_rpm; /* 归一化拨弹电机转速 */
}Shoot_Feedback_t;
typedef struct{
float fil_rpm[MAX_FRIC_NUM]; /* 滤波后的摩擦轮原始转速 */
float normalized_fil_rpm[MAX_FRIC_NUM]; /* 归一化摩擦轮转速 */
float normalized_fil_avgrpm[MAX_NUM_MULTILEVEL]; /* 归一化摩擦轮平均转速 */
float coupled_control_weights; /* 耦合控制权重 */
}Shoot_VARSForFricCtrl_t;
// float fil_rpm[MAX_FRIC_NUM]; /* 滤波后的摩擦轮原始转速 */
// float normalized_fil_rpm[MAX_FRIC_NUM]; /* 归一化且滤波后的摩擦轮转速 */
// float normalized_fil_avgrpm; /* 归一化摩擦轮平均转速 */
typedef struct{
float time_lastShoot;/* 上次射击时间 */
uint16_t num_toShoot;/* 剩余待发射弹数 */
uint16_t num_shooted;/* 已发射弹数 */
}Shoot_trigAngleCalu_t;
float trig_agl; /*计算所有减速比后的拨弹盘的角度*/
float fil_trig_rpm; /* 滤波后的拨弹电机转速*/
float trig_rpm; /* 归一化拨弹电机转速 */
}Shoot_VARSForTrigCtrl_t;
typedef struct {
bool detected; /* 卡弹检测结果 */
@ -102,7 +109,6 @@ typedef struct {
struct{
Shoot_Projectile_t projectileType; /* 发射弹丸类型 */;
size_t fric_num; /* 摩擦轮电机数量 */
size_t num_multilevel; /* 多级发射级数 */
float ratio_multilevel[MAX_NUM_MULTILEVEL]; /* 多级发射各级速度比例 */
float extra_deceleration_ratio; /*电机出轴到拨盘的额外减速比没有写1*/
size_t num_trig_tooth; /* 拨弹盘每圈弹丸数量 */
@ -159,7 +165,8 @@ typedef struct {
/* 控制信息*/
Shoot_Running_State_t running_state; /* 运行状态机 */
Shoot_JamDetection_t jamdetection; /* 卡弹检测控制信息 */
Shoot_trigAngleCalu_t anglecalu; /* 角度计算控制信息 */
Shoot_VARSForFricCtrl_t var_fric; /* 摩擦轮控制信息 */
Shoot_VARSForTrigCtrl_t var_trig; /* 角度计算控制信息 */
Shoot_Output_t output; /* 输出信息 */
/* 目标控制量 */
struct {

View File

@ -0,0 +1,613 @@
/*
* far
*/
/********************************* 使用示例 **********************************/
/*1.配置config参数以及Config_ShootInit函数参数*/
/*2.
COMP_AT9S_CMD_t shoot_ctrl_cmd_rc;
Shoot_t shoot;
Shoot_CMD_t shoot_cmd;
void Task(void *argument) {
Config_ShootInit();
Shoot_Init(&shoot,&Config_GetRobotParam()->shoot_param,SHOOT_CTRL_FREQ);
Shoot_SetMode(&shoot,SHOOT_MODE_SINGLE);
while (1) {
shoot_cmd.online =shoot_ctrl_cmd_rc.online;
shoot_cmd.ready =shoot_ctrl_cmd_rc.shoot.ready;
shoot_cmd.firecmd =shoot_ctrl_cmd_rc.shoot.firecmd;
shoot.mode =shoot_ctrl_cmd_rc.mode;
Chassis_UpdateFeedback(&shoot);
Shoot_Control(&shoot,&shoot_cmd);
}
}
*******************************************************************************/
/* Includes ----------------------------------------------------------------- */
#include <string.h>
#include "shoot.h"
#include "bsp/mm.h"
#include "bsp/time.h"
#include "component/filter.h"
#include "component/user_math.h"
/* Private typedef ---------------------------------------------------------- */
/* Private define ----------------------------------------------------------- */
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */
static bool last_firecmd;
/* Private function -------------------------------------------------------- */
/**
* \brief
*
* \param s
* \param mode
*
* \return
*/
int8_t Shoot_SetMode(Shoot_t *s, Shoot_Mode_t mode)
{
if (s == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
s->mode=mode;
s->anglecalu.num_toShoot=0;
return SHOOT_OK;
}
/**
* \brief PID积分
*
* \param s
*
* \return
*/
int8_t Shoot_ResetIntegral(Shoot_t *s)
{
if (s == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
uint8_t fric_num = s->param->basic.fric_num;
for(int i=0;i<fric_num;i++)
{
PID_ResetIntegral(&s->pid.fric_follow[i]);
PID_ResetIntegral(&s->pid.fric_err[i]);
}
PID_ResetIntegral(&s->pid.trig);
PID_ResetIntegral(&s->pid.trig_omg);
return SHOOT_OK;
}
/**
* \brief
*
* \param s
*
* \return
*/
int8_t Shoot_ResetCalu(Shoot_t *s)
{
if (s == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
uint8_t fric_num = s->param->basic.fric_num;
for(int i=0;i<fric_num;i++)
{
PID_Reset(&s->pid.fric_follow[i]);
PID_Reset(&s->pid.fric_err[i]);
LowPassFilter2p_Reset(&s->filter.fric.in[i], 0.0f);
LowPassFilter2p_Reset(&s->filter.fric.out[i], 0.0f);
}
PID_Reset(&s->pid.trig);
PID_Reset(&s->pid.trig_omg);
LowPassFilter2p_Reset(&s->filter.trig.in, 0.0f);
LowPassFilter2p_Reset(&s->filter.trig.out, 0.0f);
return SHOOT_OK;
}
/**
* \brief
*
* \param s
*
* \return
*/
int8_t Shoot_ResetOutput(Shoot_t *s)
{
if (s == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
uint8_t fric_num = s->param->basic.fric_num;
for(int i=0;i<fric_num;i++)
{
s->output.out_follow[i]=0.0f;
s->output.out_err[i]=0.0f;
s->output.out_fric[i]=0.0f;
s->output.lpfout_fric[i]=0.0f;
}
s->output.outagl_trig=0.0f;
s->output.outomg_trig=0.0f;
s->output.outlpf_trig=0.0f;
return SHOOT_OK;
}
//float last_angle=0.0f;
//float speed=0.0f;
//int8_t Shoot_CalufeedbackRPM(Shoot_t *s)
//{
// if (s == NULL) {
// return SHOOT_ERR_NULL; // 参数错误
// }
//// static
// float err;
// err=CircleError(s->feedback.fric[0].rotor_abs_angle,last_angle,M_2PI);
// speed=err/s->dt/M_2PI*60.0f;
// last_angle=s->feedback.fric->rotor_abs_angle;
// return SHOOT_OK;
//}
/**
* \brief
*
* \param s
* \param target_speed m/s
*
* \return
*/
int8_t Shoot_CaluTargetRPM(Shoot_t *s, float target_speed)
{
if (s == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
switch(s->param->basic.projectileType)
{
case SHOOT_PROJECTILE_17MM:
s->target_variable.fric_rpm=5000.0f;
break;
case SHOOT_PROJECTILE_42MM:
s->target_variable.fric_rpm=4000.0f;
break;
}
return SHOOT_OK;
}
/**
* \brief
*
* \param s
* \param cmd
*
* \return
*/
int8_t Shoot_CaluTargetAngle(Shoot_t *s, Shoot_CMD_t *cmd)
{
if (s == NULL || s->anglecalu.num_toShoot == 0) {
return SHOOT_ERR_NULL;
}
float dt = s->timer.now - s->anglecalu.time_lastShoot;
float dpos;
dpos = CircleError(s->target_variable.trig_angle, s->feedback.trig_agl, M_2PI);
if(dt >= 1.0f/s->param->basic.shot_freq && cmd->firecmd && dpos<=1.0f)
{
s->anglecalu.time_lastShoot=s->timer.now;
CircleAdd(&s->target_variable.trig_angle, M_2PI/s->param->basic.num_trig_tooth, M_2PI);
s->anglecalu.num_toShoot--;
}
return SHOOT_OK;
}
/**
* \brief
*
* \param s
*
* \return
*/
int8_t Shoot_UpdateFeedback(Shoot_t *s)
{
if (s == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
float rpm_sum=0.0f;
uint8_t fric_num = s->param->basic.fric_num;
for(int i = 0; i < fric_num; i++) {
/* 更新摩擦轮电机反馈 */
MOTOR_RM_Update(&s->param->motor.fric[i].param);
MOTOR_RM_t *motor_fed = MOTOR_RM_GetMotor(&s->param->motor.fric[i].param);
if(motor_fed!=NULL)
{
s->feedback.fric[i]=motor_fed->motor.feedback;
}
/* 滤波摩擦轮电机转速反馈 */
s->feedback.fil_fric_rpm[i] = LowPassFilter2p_Apply(&s->filter.fric.in[i], s->feedback.fric[i].rotor_speed);
/* 归一化摩擦轮电机转速反馈 */
s->feedback.fric_rpm[i] = s->feedback.fil_fric_rpm[i] / MAX_FRIC_RPM;
if(s->feedback.fric_rpm[i]>1.0f)s->feedback.fric_rpm[i]=1.0f;
if(s->feedback.fric_rpm[i]<-1.0f)s->feedback.fric_rpm[i]=-1.0f;
/* 计算平均摩擦轮电机转速反馈 */
rpm_sum+=s->feedback.fric_rpm[i];
}
s->feedback.fric_avgrpm=rpm_sum/fric_num;
/* 更新拨弹电机反馈 */
MOTOR_RM_Update(&s->param->motor.trig);
s->feedback.trig = *MOTOR_RM_GetMotor(&s->param->motor.trig);
s->feedback.trig_agl=s->param->basic.extra_deceleration_ratio*s->feedback.trig.gearbox_total_angle;
while(s->feedback.trig_agl<0)s->feedback.trig_agl+=M_2PI;
while(s->feedback.trig_agl>=M_2PI)s->feedback.trig_agl-=M_2PI;
if (s->feedback.trig.motor.reverse) {
s->feedback.trig_agl = M_2PI - s->feedback.trig_agl;
}
s->feedback.fil_trig_rpm = LowPassFilter2p_Apply(&s->filter.trig.in, s->feedback.trig.feedback.rotor_speed);
s->feedback.trig_rpm = s->feedback.trig.feedback.rotor_speed / MAX_TRIG_RPM;
if(s->feedback.trig_rpm>1.0f)s->feedback.trig_rpm=1.0f;
if(s->feedback.trig_rpm<-1.0f)s->feedback.trig_rpm=-1.0f;
s->errtosee = s->feedback.fric[0].rotor_speed - s->feedback.fric[1].rotor_speed;
return SHOOT_OK;
}
/**
* \brief
*
* \param s
* \param cmd
*
* \return
*/float a;
int8_t Shoot_RunningFSM(Shoot_t *s, Shoot_CMD_t *cmd)
{
if (s == NULL || cmd == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
uint8_t fric_num = s->param->basic.fric_num;
if(!s->online /*|| s->mode==SHOOT_MODE_SAFE*/){
for(int i=0;i<fric_num;i++)
{
MOTOR_RM_Relax(&s->param->motor.fric[i].param);
}
MOTOR_RM_Relax(&s->param->motor.trig);
}
else{
static float pos;
switch(s->running_state)
{
case SHOOT_STATE_IDLE:/*熄火等待*/
for(int i=0;i<fric_num;i++)
{ /* 转速归零 */
PID_ResetIntegral(&s->pid.fric_follow[i]);
s->output.out_follow[i]=PID_Calc(&s->pid.fric_follow[i],0.0f,s->feedback.fric_rpm[i],0,s->timer.dt);
s->output.out_fric[i]=s->output.out_follow[i];
s->output.lpfout_fric[i] = LowPassFilter2p_Apply(&s->filter.fric.out[i], s->output.out_fric[i]);
MOTOR_RM_SetOutput(&s->param->motor.fric[i].param, s->output.lpfout_fric[i]);
}
s->output.outagl_trig =PID_Calc(&s->pid.trig,pos,s->feedback.trig_agl,0,s->timer.dt);
s->output.outomg_trig =PID_Calc(&s->pid.trig_omg,s->output.outagl_trig,s->feedback.trig_rpm,0,s->timer.dt);
s->output.outlpf_trig =LowPassFilter2p_Apply(&s->filter.trig.out, s->output.outomg_trig);
MOTOR_RM_SetOutput(&s->param->motor.trig, s->output.outlpf_trig);
/* 检查状态机 */
if(cmd->ready)
{
Shoot_ResetCalu(s);
Shoot_ResetIntegral(s);
Shoot_ResetOutput(s);
s->running_state=SHOOT_STATE_READY;
}
break;
case SHOOT_STATE_READY:/*准备射击*/
for(int i=0;i<fric_num;i++)
{
uint8_t level=s->param->motor.fric->level-1;
float fric_rpm=s->param->basic.ratio_multilevel[level]*s->target_variable.fric_rpm/MAX_FRIC_RPM;
/* 计算跟随输出、计算修正输出 */
a=s->target_variable.fric_rpm/MAX_FRIC_RPM;
s->output.out_follow[i]=PID_Calc(&s->pid.fric_follow[i],
fric_rpm,
s->feedback.fric_rpm[i],
0,
s->timer.dt);
s->output.out_err[i]=PID_Calc(&s->pid.fric_err[i],
s->feedback.fric_avgrpm,
s->feedback.fric_rpm[i],
0,
s->timer.dt);
/* 按比例缩放并加和输出 */
ScaleSumTo1(&s->output.out_follow[i], &s->output.out_err[i]);
s->output.out_fric[i]=s->output.out_follow[i]+s->output.out_err[i];
/* 滤波 */
s->output.lpfout_fric[i] = LowPassFilter2p_Apply(&s->filter.fric.out[i], s->output.out_fric[i]);
/* 设置输出 */
MOTOR_RM_SetOutput(&s->param->motor.fric[i].param, s->output.lpfout_fric[i]);
}
/* 设置拨弹电机输出 */
s->output.outagl_trig =PID_Calc(&s->pid.trig,
pos,
s->feedback.trig_agl,
0,
s->timer.dt);
s->output.outomg_trig =PID_Calc(&s->pid.trig_omg,
s->output.outagl_trig,
s->feedback.trig_rpm,
0,
s->timer.dt);
s->output.outlpf_trig =LowPassFilter2p_Apply(&s->filter.trig.out, s->output.outomg_trig);
MOTOR_RM_SetOutput(&s->param->motor.trig, s->output.outlpf_trig);
/* 检查状态机 */
if(!cmd->ready)
{
Shoot_ResetCalu(s);
Shoot_ResetOutput(s);
s->running_state=SHOOT_STATE_IDLE;
}
else if(last_firecmd==false&&cmd->firecmd==true)
{
s->running_state=SHOOT_STATE_FIRE;
/* 根据模式设置待发射弹数 */
switch(s->mode)
{
case SHOOT_MODE_SINGLE:
s->anglecalu.num_toShoot=1;
break;
case SHOOT_MODE_BURST:
s->anglecalu.num_toShoot=s->param->basic.shot_burst_num;
break;
case SHOOT_MODE_CONTINUE:
s->anglecalu.num_toShoot=6666;
break;
default:
s->anglecalu.num_toShoot=0;
break;
}
}
break;
case SHOOT_STATE_FIRE:/*射击*/
Shoot_CaluTargetAngle(s, cmd);
for(int i=0;i<fric_num;i++)
{
uint8_t level=s->param->motor.fric->level-1;
float fric_rpm=s->param->basic.ratio_multilevel[level]*s->target_variable.fric_rpm/MAX_FRIC_RPM;
/* 计算跟随输出、计算修正输出 */
s->output.out_follow[i]=PID_Calc(&s->pid.fric_follow[i],
fric_rpm,
s->feedback.fric_rpm[i],
0,
s->timer.dt);
s->output.out_err[i]=PID_Calc(&s->pid.fric_err[i],
s->feedback.fric_avgrpm,
s->feedback.fric_rpm[i],
0,
s->timer.dt);
/* 按比例缩放并加和输出 */
ScaleSumTo1(&s->output.out_follow[i], &s->output.out_err[i]);
s->output.out_fric[i]=s->output.out_follow[i]+s->output.out_err[i];
/* 滤波 */
s->output.lpfout_fric[i] = LowPassFilter2p_Apply(&s->filter.fric.out[i], s->output.out_fric[i]);
/* 设置输出 */
MOTOR_RM_SetOutput(&s->param->motor.fric[i].param, s->output.lpfout_fric[i]);
}
/* 设置拨弹电机输出 */
s->output.outagl_trig =PID_Calc(&s->pid.trig,
s->target_variable.trig_angle,
s->feedback.trig_agl,
0,
s->timer.dt);
s->output.outomg_trig =PID_Calc(&s->pid.trig_omg,
s->output.outagl_trig,
s->feedback.trig_rpm,
0,
s->timer.dt);
s->output.outlpf_trig =LowPassFilter2p_Apply(&s->filter.trig.out, s->output.outomg_trig);
MOTOR_RM_SetOutput(&s->param->motor.trig, s->output.outlpf_trig);
/* 检查状态机 */
if(!cmd->firecmd)
{
s->running_state=SHOOT_STATE_READY;
pos=s->feedback.trig_agl;
}
break;
default:
s->running_state=SHOOT_STATE_IDLE;
break;
}
}
/* 输出 */
MOTOR_RM_Ctrl(&s->param->motor.fric[0].param);
if(s->param->basic.fric_num>4)
{
MOTOR_RM_Ctrl(&s->param->motor.fric[4].param);
}
MOTOR_RM_Ctrl(&s->param->motor.trig);
last_firecmd = cmd->firecmd;
return SHOOT_OK;
}
/**
* \brief
*
* \param s
* \param cmd
*
* \return
*/
int8_t Shoot_JamDetectionFSM(Shoot_t *s, Shoot_CMD_t *cmd)
{
if (s == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
if(s->param->jamDetection.enable){
switch (s->jamdetection.fsmState) {
case SHOOT_JAMFSM_STATE_NORMAL:/* 正常运行 */
/* 检测电流是否超过阈值 */
if (s->feedback.trig.feedback.torque_current/1000.0f > s->param->jamDetection.threshold) {
s->jamdetection.fsmState = SHOOT_JAMFSM_STATE_SUSPECTED;
s->jamdetection.lastTime = s->timer.now; /* 记录怀疑开始时间 */
}
/* 正常运行射击状态机 */
Shoot_RunningFSM(s, cmd);
break;
case SHOOT_JAMFSM_STATE_SUSPECTED:/* 怀疑堵塞 */
/* 检测电流是否低于阈值 */
if (s->feedback.trig.feedback.torque_current/1000.0f < s->param->jamDetection.threshold) {
s->jamdetection.fsmState = SHOOT_JAMFSM_STATE_NORMAL;
break;
}
/* 检测高阈值状态是否超过设定怀疑时间 */
else if ((s->timer.now - s->jamdetection.lastTime) >= s->param->jamDetection.suspectedTime) {
s->jamdetection.detected =true;
s->jamdetection.fsmState = SHOOT_JAMFSM_STATE_CONFIRMED;
break;
}
/* 正常运行射击状态机 */
Shoot_RunningFSM(s, cmd);
break;
case SHOOT_JAMFSM_STATE_CONFIRMED:/* 确认堵塞 */
/* 清空待发射弹 */
s->anglecalu.num_toShoot=0;
/* 修改拨弹盘目标角度 */
s->target_variable.trig_angle = s->feedback.trig_agl-(M_2PI/s->param->basic.num_trig_tooth);
/* 切换状态 */
s->jamdetection.fsmState = SHOOT_JAMFSM_STATE_DEAL;
/* 记录处理开始时间 */
s->jamdetection.lastTime = s->timer.now;
case SHOOT_JAMFSM_STATE_DEAL:/* 堵塞处理 */
/* 正常运行射击状态机 */
Shoot_RunningFSM(s, cmd);
/* 给予0.3秒响应时间并检测电流小于20A认为堵塞已解除 */
if ((s->timer.now - s->jamdetection.lastTime)>=0.3f&&s->feedback.trig.feedback.torque_current/1000.0f < 20.0f) {
s->jamdetection.fsmState = SHOOT_JAMFSM_STATE_NORMAL;
}
break;
default:
s->jamdetection.fsmState = SHOOT_JAMFSM_STATE_NORMAL;
break;
}
}
else{
s->jamdetection.fsmState = SHOOT_JAMFSM_STATE_NORMAL;
s->jamdetection.detected = false;
Shoot_RunningFSM(s, cmd);
}
return SHOOT_OK;
}
/* Exported functions ------------------------------------------------------- */
/**
* \brief
*
* \param s
* \param param
* \param target_freq Hz
*
* \return
*/
int8_t Shoot_Init(Shoot_t *s, Shoot_Params_t *param, float target_freq)
{
if (s == NULL || param == NULL || target_freq <= 0.0f) {
return SHOOT_ERR_NULL; // 参数错误
}
uint8_t fric_num = param->basic.fric_num;
s->param=param;
BSP_CAN_Init();
/* 初始化摩擦轮PID和滤波器 */
for(int i=0;i<fric_num;i++){
MOTOR_RM_Register(&param->motor.fric[i].param);
PID_Init(&s->pid.fric_follow[i],
KPID_MODE_CALC_D,
target_freq,
&param->pid.fric_follow);
PID_Init(&s->pid.fric_err[i],
KPID_MODE_CALC_D,
target_freq,
&param->pid.fric_err);
LowPassFilter2p_Init(&s->filter.fric.in[i],
target_freq,
s->param->filter.fric.in);
LowPassFilter2p_Init(&s->filter.fric.out[i],
target_freq,
s->param->filter.fric.out);
}
/* 初始化拨弹PID和滤波器 */
MOTOR_RM_Register(&param->motor.trig);
switch(s->param->motor.trig.module)
{
case MOTOR_M3508:
PID_Init(&s->pid.trig,
KPID_MODE_CALC_D,
target_freq,
&param->pid.trig_3508);
PID_Init(&s->pid.trig_omg,
KPID_MODE_CALC_D,
target_freq,
&param->pid.trig_omg_3508);
break;
case MOTOR_M2006:
PID_Init(&s->pid.trig,
KPID_MODE_CALC_D,
target_freq,
&param->pid.trig_2006);
PID_Init(&s->pid.trig_omg,
KPID_MODE_CALC_D,
target_freq,
&param->pid.trig_omg_2006);
break;
default:
return SHOOT_ERR_MOTOR;
break;
}
LowPassFilter2p_Init(&s->filter.trig.in,
target_freq,
s->param->filter.trig.in);
LowPassFilter2p_Init(&s->filter.trig.out,
target_freq,
s->param->filter.trig.out);
/* 归零变量 */
memset(&s->anglecalu,0,sizeof(s->anglecalu));
return SHOOT_OK;
}
/**
* \brief
*
* \param s
* \param cmd
*
* \return
*/
int8_t Shoot_Control(Shoot_t *s, Shoot_CMD_t *cmd)
{
if (s == NULL || cmd == NULL) {
return SHOOT_ERR_NULL; // 参数错误
}
s->timer.now = BSP_TIME_Get_us() / 1000000.0f;
s->timer.dt = (BSP_TIME_Get_us() - s->timer.lask_wakeup) / 1000000.0f;
s->timer.lask_wakeup = BSP_TIME_Get_us();
s->online = cmd->online;
// Shoot_CaluTargetRPM(s,233);
Shoot_JamDetectionFSM(s, cmd);
// Shoot_CalufeedbackRPM(s);
return SHOOT_OK;
}

View File

@ -0,0 +1,243 @@
/*
* far
*/
#pragma once
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
#include "main.h"
#include "component/pid.h"
#include "device/motor_rm.h"
/* Exported constants ------------------------------------------------------- */
#define SHOOT_OK (0) /* 运行正常 */
#define SHOOT_ERR_NULL (-1) /* 运行时发现NULL指针 */
#define SHOOT_ERR_ERR (-2) /* 运行时发现了其他错误 */
#define SHOOT_ERR_MODE (-3) /* 运行时配置了错误的Mode */
#define SHOOT_ERR_MOTOR (-4) /* 运行时配置了不存在的电机类型 */
#define SHOOT_ERR_MALLOC (-5) /* 内存分配失败 */
#define MAX_FRIC_RPM 7000.0f
#define MAX_TRIG_RPM 5000.0f//这里可能也会影响最高发射频率,待测试
#define MAX_FRIC_NUM 6
#define MAX_NUM_MULTILEVEL 2 /* 多级发射级数 */
/* Exported macro ----------------------------------------------------------- */
/* Exported types ----------------------------------------------------------- */
typedef enum {
SHOOT_JAMFSM_STATE_NORMAL = 0,/* 常规状态 */
SHOOT_JAMFSM_STATE_SUSPECTED, /* 怀疑状态 */
SHOOT_JAMFSM_STATE_CONFIRMED, /* 确认状态 */
SHOOT_JAMFSM_STATE_DEAL /* 处理状态 */
}Shoot_JamDetectionFSM_State_t;
typedef enum {
SHOOT_STATE_IDLE = 0,/* 熄火 */
SHOOT_STATE_READY, /* 准备射击 */
SHOOT_STATE_FIRE /* 射击 */
}Shoot_Running_State_t;
typedef enum {
SHOOT_MODE_SAFE = 0,/* 安全模式 */
SHOOT_MODE_SINGLE, /* 单发模式 */
SHOOT_MODE_BURST, /* 多发模式 */
SHOOT_MODE_CONTINUE,/* 连发模式 */
SHOOT_MODE_NUM
}Shoot_Mode_t;
typedef enum {
SHOOT_PROJECTILE_17MM,
SHOOT_PROJECTILE_42MM,
}Shoot_Projectile_t;
typedef struct{
MOTOR_RM_Param_t param;
uint8_t level; /* 电机属于第几级发射1起始 */
}Shoot_MOTOR_RM_Param_t;
typedef struct {
MOTOR_Feedback_t fric[MAX_FRIC_NUM];/* 摩擦轮电机反馈 */
MOTOR_RM_t trig; /* 拨弹电机反馈 */
float trig_agl; /*计算所有减速比后的拨弹盘的角度*/
float fil_fric_rpm[MAX_FRIC_NUM]; /* 滤波后的摩擦轮转速 */
float fil_trig_rpm; /* 滤波后的拨弹电机转速*/
float fric_rpm[MAX_FRIC_NUM]; /* 归一化摩擦轮转速 */
float fric_avgrpm; /* 归一化摩擦轮平均转速 */
float trig_rpm; /* 归一化拨弹电机转速 */
}Shoot_Feedback_t;
typedef struct{
float time_lastShoot;/* 上次射击时间 */
uint16_t num_toShoot;/* 剩余待发射弹数 */
uint16_t num_shooted;/* 已发射弹数 */
}Shoot_trigAngleCalu_t;
typedef struct {
bool detected; /* 卡弹检测结果 */
float lastTime;/* 用于记录怀疑状态或处理状态的开始时间 */
Shoot_JamDetectionFSM_State_t fsmState; /* 卡弹检测状态机 */
}Shoot_JamDetection_t;
typedef struct {
float out_follow[MAX_FRIC_NUM];
float out_err[MAX_FRIC_NUM];
float out_fric[MAX_FRIC_NUM];
float lpfout_fric[MAX_FRIC_NUM];
float outagl_trig;
float outomg_trig;
float outlpf_trig;
}Shoot_Output_t;
typedef struct {
bool online; /* 在线标志 */
Shoot_Mode_t mode;/* 射击模式 */
bool ready; /* 准备射击 */
bool firecmd; /* 射击 */
}Shoot_CMD_t;
/* 底盘参数的结构体包含所有初始化用的参数通常是const存好几组 */
typedef struct {
struct{
Shoot_Projectile_t projectileType; /* 发射弹丸类型 */;
size_t fric_num; /* 摩擦轮电机数量 */
size_t num_multilevel; /* 多级发射级数 */
float ratio_multilevel[MAX_NUM_MULTILEVEL]; /* 多级发射各级速度比例 */
float extra_deceleration_ratio; /*电机出轴到拨盘的额外减速比没有写1*/
size_t num_trig_tooth; /* 拨弹盘每圈弹丸数量 */
float shot_freq; /* 射击频率单位Hz */
size_t shot_burst_num; /* 多发模式一次射击的数量 */
}basic;/* 发射基础参数 */
struct {
bool enable; /* 是否启用卡弹检测 */
float threshold; /* 卡弹检测阈值单位A (dji2006建议设置为120Adji3508建议设置为235A,根据实际测试调整)*/
float suspectedTime;/* 卡弹怀疑时间,单位秒 */
}jamDetection;/* 卡弹检测参数 */
struct {
Shoot_MOTOR_RM_Param_t fric[MAX_FRIC_NUM];
MOTOR_RM_Param_t trig;
}motor; /* 电机参数 */
struct{
KPID_Params_t fric_follow; /* 摩擦轮电机PID控制参数用于跟随目标速度 */
KPID_Params_t fric_err; /* 摩擦轮电机PID控制参数用于消除转速误差 */
KPID_Params_t trig_2006; /* 拨弹电机PID控制参数 */
KPID_Params_t trig_omg_2006;/* 拨弹电机PID控制参数 */
KPID_Params_t trig_3508; /* 拨弹电机PID控制参数 */
KPID_Params_t trig_omg_3508;/* 拨弹电机PID控制参数 */
}pid; /* PID参数 */
struct {
struct{
float in; /* 反馈值滤波器截止频率 */
float out; /* 输出值滤波器截止频率 */
}fric;
struct{
float in; /* 反馈值滤波器截止频率 */
float out; /* 输出值滤波器截止频率 */
}trig;
} filter;/* 滤波器截止频率参数 */
} Shoot_Params_t;
typedef struct {
float now; /* 当前时间,单位秒 */
uint64_t lask_wakeup; /* 上次唤醒时间,单位微秒 */
float dt; /* 两次唤醒间隔时间,单位秒 */
}Shoot_Timer_t;
/*
*
*
*/
typedef struct {
bool online; /*在线检测*/
Shoot_Timer_t timer; /* 计时器 */
Shoot_Params_t *param; /* 发射参数 */
/* 模块通用 */
Shoot_Mode_t mode; /* 射击模式 */
/* 反馈信息 */
Shoot_Feedback_t feedback;
/* 控制信息*/
Shoot_Running_State_t running_state; /* 运行状态机 */
Shoot_JamDetection_t jamdetection; /* 卡弹检测控制信息 */
Shoot_trigAngleCalu_t anglecalu; /* 角度计算控制信息 */
Shoot_Output_t output; /* 输出信息 */
/* 目标控制量 */
struct {
float fric_rpm; /* 目标摩擦轮转速 */
float trig_angle;/* 目标拨弹位置 */
}target_variable;
/* 反馈控制用的PID */
struct {
KPID_t fric_follow[MAX_FRIC_NUM];/* 摩擦轮PID主结构体 */
KPID_t fric_err[MAX_FRIC_NUM]; /* 摩擦轮PID主结构体 */
KPID_t trig; /* 拨弹PID主结构体 */
KPID_t trig_omg; /* 拨弹PID主结构体 */
} pid;
/* 滤波器 */
struct {
struct{
LowPassFilter2p_t in[MAX_FRIC_NUM]; /* 反馈值滤波器 */
LowPassFilter2p_t out[MAX_FRIC_NUM];/* 输出值滤波器 */
}fric;
struct{
LowPassFilter2p_t in; /* 反馈值滤波器 */
LowPassFilter2p_t out;/* 输出值滤波器 */
}trig;
} filter;
float errtosee; /*调试用*/
} Shoot_t;
/* Exported functions prototypes -------------------------------------------- */
/**
* \brief
*
* \param s
* \param param
* \param target_freq
*
* \return
*/
int8_t Shoot_Init(Shoot_t *s, Shoot_Params_t *param, float target_freq);
/**
* \brief
*
* \param s
* \param mode
*
* \return
*/
int8_t Shoot_SetMode(Shoot_t *s, Shoot_Mode_t mode);
/**
* \brief
*
* \param s
*
* \return
*/
int8_t Shoot_UpdateFeedback(Shoot_t *s);
/**
* \brief
*
* \param s
* \param cmd
*
* \return
*/
int8_t Shoot_Control(Shoot_t *s, Shoot_CMD_t *cmd);
#ifdef __cplusplus
}
#endif

View File

@ -6,6 +6,7 @@
/* Includes ----------------------------------------------------------------- */
#include "task/user_task.h"
/* USER INCLUDE BEGIN */
#include "device/dr16.h"
#include "device/at9s_pro.h"
#include "module/config.h"
#include "module/chassis.h"
@ -20,7 +21,6 @@
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */
/* USER STRUCT BEGIN */
DEVICE_AT9S_t at9s_out;
Shoot_CMD_t cmd_for_shoot;
Chassis_CMD_t cmd_for_chassis;
Gimbal_CMD_t cmd_for_gimbal;
@ -47,8 +47,7 @@ void Task_cmd(void *argument) {
while (1) {
tick += delay_tick; /* 计算下一个唤醒时刻 */
/* USER CODE BEGIN */
osMessageQueueGet(task_runtime.msgq.cmd.rc, &at9s_out, NULL, 0);
Cmd_GenerateCommand(&cmd);
Cmd_GenerateCommand(&cmd);
cmd_for_shoot=cmd.output.shoot.cmd;
cmd_for_chassis=cmd.output.chassis.cmd;
cmd_for_gimbal=cmd.output.gimbal.cmd;
@ -58,70 +57,6 @@ void Task_cmd(void *argument) {
osMessageQueuePut(task_runtime.msgq.shoot.cmd, &cmd_for_shoot, 0, 0);
osMessageQueueReset(task_runtime.msgq.chassis.cmd);
osMessageQueuePut(task_runtime.msgq.chassis.cmd, &cmd_for_chassis, 0, 0);
// switch (at9s_out.data.key_G) {
// case AT9S_CMD_SW_DOWN:
// cmd_for_gimbal.mode = GIMBAL_MODE_RELAX;
// cmd_for_gimbal.delta_yaw = 0.0f;
// cmd_for_gimbal.delta_pit = 0.0f;
// break;
// case AT9S_CMD_SW_MID:
// cmd_for_gimbal.mode = GIMBAL_MODE_ABSOLUTE;
// cmd_for_gimbal.delta_yaw = -at9s_out.data.ch_l_x * 2.0f;
// cmd_for_gimbal.delta_pit = -at9s_out.data.ch_l_y * 1.5f;
// break;
// case AT9S_CMD_SW_UP:
// cmd_for_gimbal.mode = GIMBAL_MODE_ABSOLUTE;
// cmd_for_gimbal.delta_yaw = -at9s_out.data.ch_l_x * 2.0f;
// cmd_for_gimbal.delta_pit = -at9s_out.data.ch_l_y * 1.5f;
// break;
// default:
// cmd_for_gimbal.mode = GIMBAL_MODE_RELAX;
// cmd_for_gimbal.delta_yaw = 0.0f;
// cmd_for_gimbal.delta_pit = 0.0f;
// break;
// }
// switch (at9s_out.data.key_C) {
// case AT9S_CMD_SW_DOWN:
// cmd_for_shoot.online = at9s_out.online;
// cmd_for_shoot.ready = true;
// cmd_for_shoot.firecmd = true;
// break;
// case AT9S_CMD_SW_MID:
// cmd_for_shoot.online = at9s_out.online;
// cmd_for_shoot.ready = true;
// cmd_for_shoot.firecmd = false;
// break;
// case AT9S_CMD_SW_UP:
// cmd_for_shoot.online = at9s_out.online;
// cmd_for_shoot.ready = false;
// cmd_for_shoot.firecmd = false;
// break;
// default:
// cmd_for_shoot.online = at9s_out.online;
// cmd_for_shoot.ready = false;
// cmd_for_shoot.firecmd = false;
// break;
// }
// switch (at9s_from_rc.data.key_E) {
// case AT9S_CMD_SW_DOWN:
// cmd_for_chassis.mode = CHASSIS_MODE_RELAX;
// break;
// case AT9S_CMD_SW_MID:
// cmd_for_chassis.mode = CHASSIS_MODE_FOLLOW_GIMBAL;
// break;
// case AT9S_CMD_SW_UP:
// cmd_for_chassis.mode = CHASSIS_MODE_ROTOR;
// break;
// default:
// cmd_for_chassis.mode = CHASSIS_MODE_RELAX;
// break;
// }
// cmd_for_chassis.ctrl_vec.vx = at9s_from_rc.data.ch_l_y;
// cmd_for_chassis.ctrl_vec.vy = at9s_from_rc.data.ch_l_x;
// cmd_for_chassis.ctrl_vec.wz = at9s_from_rc.data.ch_r_x;
/* USER CODE END */
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
}

View File

@ -35,7 +35,7 @@ void Task_ctrl_chassis(void *argument) {
/* USER CODE INIT BEGIN */
Config_RobotParam_t *cfg = Config_GetRobotParam();
Chassis_Init(&chassis, &cfg->chassis_param, (float)CTRL_CHASSIS_FREQ);
chassis.mech_zero=4.13f;
chassis.mech_zero=0.57f;
/* USER CODE INIT END */
while (1) {

View File

@ -6,7 +6,6 @@
/* Includes ----------------------------------------------------------------- */
#include "task/user_task.h"
/* USER INCLUDE BEGIN */
#include "component/at9s_pro_cmd.h"
#include "module/shoot.h"
#include "module/config.h"
/* USER INCLUDE END */
@ -34,7 +33,6 @@ void Task_ctrl_shoot(void *argument) {
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */
/* USER CODE INIT BEGIN */
Shoot_Init(&shoot,&Config_GetRobotParam()->shoot_param,CTRL_SHOOT_FREQ);
Shoot_SetMode(&shoot,SHOOT_MODE_BURST);
/* USER CODE INIT END */
while (1) {
@ -42,6 +40,7 @@ void Task_ctrl_shoot(void *argument) {
/* USER CODE BEGIN */
osMessageQueueGet(task_runtime.msgq.shoot.cmd, &shoot_cmd, NULL, 0);
Shoot_UpdateFeedback(&shoot);
Shoot_SetMode(&shoot,shoot_cmd.mode);
Shoot_Control(&shoot,&shoot_cmd);
/* USER CODE END */

View File

@ -7,8 +7,8 @@
#include "task/user_task.h"
/* USER INCLUDE BEGIN */
#include "device/dr16.h"
#include "device/at9s_pro.h"
#include "component/at9s_pro_cmd.h"
#include "module/gimbal.h"
#include "module/shoot.h"
#include "module/chassis.h"
@ -46,10 +46,10 @@ void Task_Init(void *argument) {
// 创建消息队列
/* USER MESSAGE BEGIN */
task_runtime.msgq.user_msg= osMessageQueueNew(2u, 10, NULL);
task_runtime.msgq.cmd.rc= osMessageQueueNew(3u, sizeof(DEVICE_AT9S_t), NULL);
task_runtime.msgq.cmd.pc= osMessageQueueNew(3u, sizeof(DEVICE_AT9S_t), NULL);
task_runtime.msgq.chassis.cmd= osMessageQueueNew(3u, sizeof(COMP_AT9S_CMD_t), NULL);
task_runtime.msgq.cmd.rc= osMessageQueueNew(3u, sizeof(AT9S_t), NULL);
task_runtime.msgq.cmd.pc= osMessageQueueNew(3u, sizeof(DR16_t), NULL);
task_runtime.msgq.chassis.yaw = osMessageQueueNew(2u, sizeof(float), NULL);
task_runtime.msgq.chassis.cmd= osMessageQueueNew(3u, sizeof(Chassis_CMD_t), NULL);
task_runtime.msgq.gimbal.imu= osMessageQueueNew(2u, sizeof(Gimbal_IMU_t), NULL);
task_runtime.msgq.gimbal.cmd= osMessageQueueNew(2u, sizeof(Gimbal_CMD_t), NULL);
task_runtime.msgq.shoot.cmd = osMessageQueueNew(2u, sizeof(Shoot_CMD_t), NULL);

View File

@ -3,14 +3,13 @@
*/
// #define AT9S
#define AT9S
#define AT9S
// #define DR16
/* Includes ----------------------------------------------------------------- */
#include "task/user_task.h"
/* USER INCLUDE BEGIN */
#ifdef AT9S
#include "device/at9s_pro.h"
#include "component/at9s_pro_cmd.h"
#endif
#ifdef DR16
@ -24,9 +23,8 @@
/* Private variables -------------------------------------------------------- */
/* USER STRUCT BEGIN */
#ifdef AT9S
uint8_t cmd_buffer[DEVICE_AT9S_FRAME_LEN];
DEVICE_AT9S_t at9s;
COMP_AT9S_CMD_t rc_cmd;
uint8_t cmd_buffer[AT9S_FRAME_LEN];
AT9S_t at9s;
#endif
#ifdef DR16
DR16_t dr16;
@ -47,8 +45,8 @@ void Task_rc(void *argument) {
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */
/* USER CODE INIT BEGIN */
#ifdef AT9S
DEVICE_AT9S_Init(&at9s);
DEVICE_AT9S_StartDmaRecv(cmd_buffer);
AT9S_Init(&at9s);
AT9S_StartDmaRecv(cmd_buffer);
#endif
#ifdef DR16
DR16_Init(&dr16);
@ -59,9 +57,9 @@ void Task_rc(void *argument) {
tick += delay_tick; /* 计算下一个唤醒时刻 */
/* USER CODE BEGIN */
#ifdef AT9S
if (DEVICE_AT9S_WaitDmaCplt(10)) {
DEVICE_AT9S_ParseRaw(cmd_buffer, &at9s);
DEVICE_AT9S_StartDmaRecv(cmd_buffer);
if (AT9S_WaitDmaCplt(10)) {
AT9S_ParseRaw(cmd_buffer, &at9s);
AT9S_StartDmaRecv(cmd_buffer);
}
osMessageQueuePut(task_runtime.msgq.cmd.rc, &at9s, 0, 0);
#endif
@ -72,6 +70,7 @@ void Task_rc(void *argument) {
} else {
DR16_Offline(&dr16);
}
osMessageQueuePut(task_runtime.msgq.cmd.rc, &dr16, 0, 0);
#endif
/* USER CODE END */
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */

View File

@ -32,6 +32,7 @@ void OnProjectLoad (void) {
//
// User settings
//
Edit.SysVar (VAR_HSS_SPEED, "200 Hz");
File.Open ("D:/CUBEMX/hero/god-yuan-hero/build/Debug/hero.elf");
}

View File

@ -1,42 +1,67 @@
Breakpoint=D:/CUBEMX/hero/god-yuan-hero/User/module/shoot.c:364:7, State=BP_STATE_DISABLED
GraphedExpression="(((shoot).feedback).fric[0]).rotor_speed", Color=#e56a6f, Show=0
GraphedExpression="(((shoot).feedback).fric[1]).rotor_speed", Color=#35792b, Show=0
GraphedExpression="(((shoot).feedback).fric[3]).rotor_speed", Color=#769dda, Show=0
GraphedExpression="(((shoot).feedback).fric[2]).rotor_speed", Color=#b14f0d, Show=0
GraphedExpression="(((shoot).feedback).fric[4]).rotor_speed", Color=#b3c38e, Show=0
GraphedExpression="(((shoot).feedback).fric[5]).rotor_speed", Color=#ab7b05, Show=0
GraphedExpression="((((shoot).feedback).trig).feedback).rotor_speed", Color=#7fd3b7
GraphedExpression="((((shoot).feedback).trig).feedback).rotor_abs_angle", Color=#50328f
OpenDocument="memcpy.c", FilePath="/build/gnu-tools-for-stm32_13.3.rel1.20250523-0900/src/newlib/newlib/libc/string/memcpy.c", Line=0
OpenDocument="startup_stm32f407xx.s", FilePath="D:/CUBEMX/hero/god-yuan-hero/startup_stm32f407xx.s", Line=48
OpenDocument="motor_dm.h", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/device/motor_dm.h", Line=45
OpenDocument="can.h", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/bsp/can.h", Line=0
OpenDocument="shoot.h", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/module/shoot.h", Line=78
OpenDocument="ctrl_gimbal.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/task/ctrl_gimbal.c", Line=14
OpenDocument="main.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/Core/Src/main.c", Line=60
OpenDocument="rc.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/task/rc.c", Line=0
OpenDocument="tasks.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/Middlewares/Third_Party/FreeRTOS/Source/tasks.c", Line=3627
OpenDocument="shoot.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/module/shoot.c", Line=0
OpenDocument="tasks.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/Middlewares/Third_Party/FreeRTOS/Source/tasks.c", Line=3419
OpenDocument="shoot.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/module/shoot.c", Line=346
OpenDocument="config.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/module/config.c", Line=0
OpenDocument="config.h", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/module/config.h", Line=0
OpenDocument="cmd.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/task/cmd.c", Line=79
OpenDocument="cmd.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/module/cmd.c", Line=174
OpenDocument="startup_stm32f407xx.s", FilePath="D:/CUBEMX/hero/god-yuan-hero/startup_stm32f407xx.s", Line=48
OpenDocument="cmd.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/task/cmd.c", Line=22
OpenDocument="cmd.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/module/cmd.c", Line=80
OpenDocument="stm32f4xx_hal_can.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c", Line=1994
OpenDocument="stm32f4xx_hal_msp.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/Core/Src/stm32f4xx_hal_msp.c", Line=28
OpenDocument="usart.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/Core/Src/usart.c", Line=179
OpenDocument="ctrl_shoot.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/task/ctrl_shoot.c", Line=0
OpenDocument="ctrl_gimbal.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/task/ctrl_gimbal.c", Line=14
OpenDocument="ctrl_chassis.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/task/ctrl_chassis.c", Line=7
OpenDocument="ctrl_chassis.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/task/ctrl_chassis.c", Line=6
OpenDocument="gimbal.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/module/gimbal.c", Line=0
OpenDocument="ctrl_shoot.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/task/ctrl_shoot.c", Line=2
OpenDocument="user_task.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/User/task/user_task.c", Line=0
OpenDocument="stm32f4xx_it.c", FilePath="D:/CUBEMX/hero/god-yuan-hero/Core/Src/stm32f4xx_it.c", Line=83
OpenToolbar="Debug", Floating=0, x=0, y=0
OpenWindow="Registers 1", DockArea=RIGHT, x=0, y=1, w=726, h=541, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, FilteredItems=[], RefreshRate=1
OpenWindow="Registers 1", DockArea=RIGHT, x=0, y=1, w=726, h=521, TabPos=2, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, FilteredItems=[], RefreshRate=1
OpenWindow="Source Files", DockArea=LEFT, x=0, y=0, w=301, h=919, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Disassembly", DockArea=RIGHT, x=0, y=0, w=726, h=377, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Watched Data 1", DockArea=RIGHT, x=0, y=1, w=726, h=541, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Disassembly", DockArea=RIGHT, x=0, y=0, w=726, h=397, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Watched Data 1", DockArea=RIGHT, x=0, y=1, w=726, h=521, TabPos=1, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Functions", DockArea=LEFT, x=0, y=0, w=301, h=919, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Data Sampling", DockArea=BOTTOM, x=1, y=0, w=1276, h=536, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VisibleTab=0, UniformSampleSpacing=0
OpenWindow="Timeline", DockArea=BOTTOM, x=0, y=0, w=1283, h=555, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=1, DataPaneShown=1, PowerPaneShown=0, CodePaneShown=0, PinCursor="Cursor Movable", TimePerDiv="2 s / Div", TimeStampFormat="Time", DataGraphDrawAsPoints=0, DataGraphLegendShown=1, DataGraphUniformSampleSpacing=0, DataGraphLegendPosition="889;0", DataGraphShowNamesAtCursor=0, PowerGraphDrawAsPoints=0, PowerGraphLegendShown=0, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="1059;-69", CodeGraphLegendShown=0, CodeGraphLegendPosition="1075;0"
OpenWindow="Console", DockArea=BOTTOM, x=1, y=0, w=1276, h=536, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Data Sampling", DockArea=BOTTOM, x=1, y=0, w=587, h=536, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VisibleTab=0, UniformSampleSpacing=0
OpenWindow="Timeline", DockArea=BOTTOM, x=0, y=0, w=1972, h=555, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=1, DataPaneShown=1, PowerPaneShown=0, CodePaneShown=0, PinCursor="Cursor Movable", TimePerDiv="2 s / Div", TimeStampFormat="Time", DataGraphDrawAsPoints=0, DataGraphLegendShown=1, DataGraphUniformSampleSpacing=0, DataGraphLegendPosition="0;165", DataGraphShowNamesAtCursor=0, PowerGraphDrawAsPoints=0, PowerGraphLegendShown=0, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="1059;-69", CodeGraphLegendShown=0, CodeGraphLegendPosition="1074;0"
OpenWindow="Console", DockArea=BOTTOM, x=1, y=0, w=587, h=536, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Watched Data 2", DockArea=RIGHT, x=0, y=1, w=726, h=521, TabPos=0, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
SmartViewPlugin="", Page="", Toolbar="Hidden", Window="SmartView 1"
TableHeader="Watched Data 2", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Location";"Refresh"], ColWidths=[100;100;100;426]
TableHeader="Watched Data 1", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Location";"Refresh"], ColWidths=[250;282;91;100]
TableHeader="Registers 1", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Description"], ColWidths=[120;144;462]
TableHeader="Functions", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Address";"Size";"#Insts";"Source"], ColWidths=[1594;104;100;100;100]
TableHeader="Power Sampling", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time";"Ch 0"], ColWidths=[100;100;100]
TableHeader="RegisterSelectionDialog", SortCol="None", SortOrder="ASCENDING", VisibleCols=[], ColWidths=[]
TableHeader="Source Files", SortCol="File", SortOrder="ASCENDING", VisibleCols=["File";"Status";"Size";"#Insts";"Path"], ColWidths=[215;100;100;100;1014]
TableHeader="Watched Data 1", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Location";"Refresh"], ColWidths=[250;282;91;103]
TableHeader="Data Sampling Table", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time"], ColWidths=[100;100]
TableHeader="Data Sampling Setup", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Type";"Value";"Min";"Max";"Average";"# Changes";"Min. Change";"Max. Change"], ColWidths=[118;100;100;100;100;100;110;126;422]
TableHeader="Data Sampling Table", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time";" (((shoot).feedback).fric[0]).rotor_speed";" (((shoot).feedback).fric[1]).rotor_speed";" (((shoot).feedback).fric[3]).rotor_speed";" (((shoot).feedback).fric[2]).rotor_speed";" (((shoot).feedback).fric[4]).rotor_speed";" (((shoot).feedback).fric[5]).rotor_speed";" ((((shoot).feedback).trig).feedback).rotor_speed";" ((((shoot).feedback).trig).feedback).rotor_abs_angle"], ColWidths=[100;100;100;100;100;100;100;100;100;100]
TableHeader="Data Sampling Setup", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Type";"Value";"Min";"Max";"Average";"# Changes";"Min. Change";"Max. Change"], ColWidths=[118;100;134;104;114;114;110;126;126]
TableHeader="TargetExceptionDialog", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Address";"Description"], ColWidths=[200;100;100;366]
WatchedExpression="0x20008DD8", Window=Watched Data 1
WatchedExpression="cmd", RefreshRate=5, Window=Watched Data 1
WatchedExpression="robot_config", RefreshRate=5, Window=Watched Data 1
WatchedExpression="shoot", RefreshRate=5, Window=Watched Data 1
WatchedExpression="at9s", Window=Watched Data 1
WatchedExpression="at9s", RefreshRate=5, Window=Watched Data 1
WatchedExpression="dr16", RefreshRate=5, Window=Watched Data 1
WatchedExpression="shoot_cmd", RefreshRate=5, Window=Watched Data 1
WatchedExpression="chassis", RefreshRate=5, Window=Watched Data 1
WatchedExpression="chassis_cmd", RefreshRate=5, Window=Watched Data 1
WatchedExpression="gimbal_cmd", RefreshRate=5, Window=Watched Data 1
WatchedExpression="gimbal", RefreshRate=5, Window=Watched Data 1
WatchedExpression="at9s_out", RefreshRate=5, Window=Watched Data 1