diff --git a/InfantryTest/MDK-ARM/standard_robot.uvguix.17568 b/InfantryTest/MDK-ARM/standard_robot.uvguix.17568
new file mode 100644
index 0000000000000000000000000000000000000000..19accf2aeee5190870d0f8e1d138313274b37056
--- /dev/null
+++ b/InfantryTest/MDK-ARM/standard_robot.uvguix.17568
@@ -0,0 +1,1762 @@
+
+
+
+ -6.1
+
+ ### uVision Project, (C) Keil Software
+
+
+
+
+
+ 38003
+ Registers
+ 115 88
+
+
+ 346
+ Code Coverage
+ 877 160
+
+
+ 204
+ Performance Analyzer
+ 1037
+
+
+
+
+
+ 1506
+ Symbols
+
+ 71 71 71
+
+
+ 1936
+ Watch 1
+
+ 71 71 71
+
+
+ 1937
+ Watch 2
+
+ 71 71 71
+
+
+ 1935
+ Call Stack + Locals
+
+ 71 71 71
+
+
+ 2506
+ Trace Data
+
+ 75 135 130 95 70 230 200 150
+
+
+
+
+
+
+
+ 1
+ 1
+ 0
+ 0
+ -1
+
+
+
+
+
+
+ 44
+ 2
+ 3
+
+ -32000
+ -32000
+
+
+ -1
+ -1
+
+
+ 350
+ 581
+ 1448
+ 854
+
+
+
+ 0
+
+ 315
+ 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000069433A5C55736572735C31373536385C4465736B746F705C656C6563747269632D636F6E74726F6C2D67726F75702D323032342D636F64652D6D61737465725C496E66616E747279546573745C5341535F436F64655C6E616976655F636861737369735F7461736B2E6300000000146E616976655F636861737369735F7461736B2E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000D900000066000000AB0600009E020000
+
+
+
+ 0
+ Build
+
+ -1
+ -1
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ D90000004F000000F0040000DA000000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 1005
+ 1005
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000D20000006E020000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 109
+ 109
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000D20000006E020000
+
+
+ 16
+ A4000000BB000000A0010000E8020000
+
+
+
+ 1465
+ 1465
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 000000001A020000F0040000A5020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 1466
+ 1466
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 1467
+ 1467
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 1468
+ 1468
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 1506
+ 1506
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 16384
+ 0
+
+ 16
+ 1E04000066000000ED040000FD000000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 1913
+ 1913
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ D900000063000000F0040000DA000000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 1935
+ 1935
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 030000001D020000ED0400008C020000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 1936
+ 1936
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 1937
+ 1937
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 1939
+ 1939
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 1940
+ 1940
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 1941
+ 1941
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 1942
+ 1942
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 195
+ 195
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000D20000006E020000
+
+
+ 16
+ A4000000BB000000A0010000E8020000
+
+
+
+ 196
+ 196
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000D20000006E020000
+
+
+ 16
+ A4000000BB000000A0010000E8020000
+
+
+
+ 197
+ 197
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 000000009F020000AB060000D1030000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 198
+ 198
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 32768
+ 0
+
+ 16
+ 0000000006020000F0040000A5020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 199
+ 199
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000A2020000ED040000FD020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 203
+ 203
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ D900000063000000F0040000DA000000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 204
+ 204
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ DC00000066000000ED040000C1000000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 221
+ 221
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 00000000000000000000000000000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 2506
+ 2506
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1B04000063000000F004000016020000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 2507
+ 2507
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 000000001A020000F004000091020000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 343
+ 343
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ DC00000066000000ED040000C1000000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 346
+ 346
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ DC00000066000000ED040000C1000000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 35824
+ 35824
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ DC00000066000000ED040000C1000000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 35885
+ 35885
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35886
+ 35886
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35887
+ 35887
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35888
+ 35888
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35889
+ 35889
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35890
+ 35890
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35891
+ 35891
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35892
+ 35892
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35893
+ 35893
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35894
+ 35894
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35895
+ 35895
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35896
+ 35896
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35897
+ 35897
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35898
+ 35898
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35899
+ 35899
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35900
+ 35900
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35901
+ 35901
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35902
+ 35902
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35903
+ 35903
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35904
+ 35904
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 35905
+ 35905
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 38003
+ 38003
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 0300000066000000D20000008C020000
+
+
+ 16
+ A4000000BB000000A0010000E8020000
+
+
+
+ 38007
+ 38007
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 000000009F020000F004000016030000
+
+
+ 16
+ A4000000BB0000001C03000046010000
+
+
+
+ 436
+ 436
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 03000000A2020000ED040000FD020000
+
+
+ 16
+ A4000000BB000000A0010000E8020000
+
+
+
+ 437
+ 437
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 440
+ 440
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 030000001D020000ED04000078020000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50000
+ 50000
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50001
+ 50001
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50002
+ 50002
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50003
+ 50003
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50004
+ 50004
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50005
+ 50005
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50006
+ 50006
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50007
+ 50007
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50008
+ 50008
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50009
+ 50009
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50010
+ 50010
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50011
+ 50011
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50012
+ 50012
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50013
+ 50013
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50014
+ 50014
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50015
+ 50015
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50016
+ 50016
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50017
+ 50017
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50018
+ 50018
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 50019
+ 50019
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 1E04000066000000ED0400006E010000
+
+
+ 16
+ A4000000BB0000007901000082010000
+
+
+
+ 59392
+ 59392
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 0
+
+ 16
+ 0000000000000000B70300001C000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59393
+ 0
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 4096
+ 0
+
+ 16
+ 00000000D1030000AB060000E4030000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59399
+ 59399
+ 1
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 1
+
+ 16
+ 000000001C000000DA01000038000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 59400
+ 59400
+ 0
+ 0
+ 0
+ 0
+ 32767
+ 0
+ 8192
+ 2
+
+ 16
+ 00000000380000006F02000054000000
+
+
+ 16
+ 0A0000000A0000006E0000006E000000
+
+
+
+ 3119
+ 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD9000000DA000000F0040000DE000000000000000100001004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000A4000000BB0000001C03000046010000D90000004F000000F0040000DA0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF170400004F0000001B04000016020000000000000200001004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A4000000BB00000079010000820100001B0400004F000000F00400001602000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFD50000004F000000D900000087020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000A4000000BB0000007901000082010000000000004F000000D5000000870200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000002020000F00400000602000000000000010000100400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000A4000000BB00000079010000820100000000000006020000F0040000A502000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF78020000060200007C020000A502000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF0000000087020000AB0600008B0200000100000001000010040000000100000012FDFFFF89000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000A4000000BB0000001C03000046010000000000008B020000AB060000D10300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000
+
+
+ 59392
+ File
+
+ 2002
+ 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000000000000010000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65FF7F0000
+
+
+ 1423
+ 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E1000000000000FFFFFFFF000100000000000000010000000000000001000000018001E1000000000000FFFFFFFF000100000000000000010000000000000001000000018003E1000000000000FFFFFFFF0001000000000000000100000000000000010000000180CD7F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF000000000000000000010000000000000001000000018023E1000000000000FFFFFFFF000100000000000000010000000000000001000000018022E1000000000000FFFFFFFF000100000000000000010000000000000001000000018025E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802BE1000000000000FFFFFFFF00010000000000000001000000000000000100000001802CE1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001807A8A000000000000FFFFFFFF00010000000000000001000000000000000100000001807B8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180D3B0000000000000FFFFFFFF000100000000000000010000000000000001000000018015B1000000000000FFFFFFFF0001000000000000000100000000000000010000000180F4B0000000000000FFFFFFFF000100000000000000010000000000000001000000018036B1000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FF88000000000000FFFFFFFF0001000000000000000100000000000000010000000180FE88000000000000FFFFFFFF00010000000000000001000000000000000100000001800B81000000000000FFFFFFFF00010000000000000001000000000000000100000001800C81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180F088000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE7F000000000000FFFFFFFF000100000000000000010000000000000001000000018024E1000000000000FFFFFFFF00010000000000000001000000000000000100000001800A81000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001802280000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C488000000000000FFFFFFFF0001000000000000000100000000000000010000000180C988000000000000FFFFFFFF0001000000000000000100000000000000010000000180C788000000000000FFFFFFFF0001000000000000000100000000000000010000000180C888000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180DD88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180FB7F000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 1423
+ 2800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000000000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000000000C0000000000000000000000000000000001000000010000000180F4B00000000000000D000000000000000000000000000000000100000001000000018036B10000000000000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF880000000000000F0000000000000000000000000000000001000000010000000180FE880000000000001000000000000000000000000000000000010000000100000001800B810000000000001100000000000000000000000000000000010000000100000001800C810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F088000000000000130000000000000000000000000000000001000000010000000180EE7F00000000000014000000000000000000000000000000000100000001000000018024E10000000000001500000000000000000000000000000000010000000100000001800A810000000000001600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000180000000000000000000000000000000001000000010000000180C988000000000000190000000000000000000000000000000001000000010000000180C7880000000000001A0000000000000000000000000000000001000000010000000180C8880000000000001B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180DD880000000000001C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001D000000000000000000000000000000000100000001000000
+
+
+
+ 59399
+ Build
+
+ 690
+ 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E00000000000000000000000000000000010000000100000001809E8A0000000000001F0000000000000000000000000000000001000000010000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA00000000000000000000000000000000000000000000000001000000010000009600000003002050000000000E7374616E646172645F726F626F74960000000000000001000E7374616E646172645F726F626F74000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64FF7F0000
+
+
+ 583
+ 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000FFFFFFFF0001000000000000000100000000000000010000000180D07F000000000000FFFFFFFF00010000000000000001000000000000000100000001803080000000000000FFFFFFFF00010000000000000001000000000000000100000001809E8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D17F000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001804C8A000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001806680000000000000FFFFFFFF0001000000000000000100000000000000010000000180EB88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180C07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180B08A000000000000FFFFFFFF0001000000000000000100000000000000010000000180A801000000000000FFFFFFFF00010000000000000001000000000000000100000001807202000000000000FFFFFFFF0001000000000000000100000000000000010000000180BE01000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 583
+ 1000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F000000000000000000000000000000000000000000000001000000010000000180D07F00000000000001000000000000000000000000000000000100000001000000018030800000000000000200000000000000000000000000000000010000000100000001809E8A000000000000030000000000000000000000000000000001000000010000000180D17F0000000000000400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000000500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001806680000000000000060000000000000000000000000000000001000000010000000180EB880000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000080000000000000000000000000000000001000000010000000180B08A000000000000090000000000000000000000000000000001000000010000000180A8010000000000000A000000000000000000000000000000000100000001000000018072020000000000000B0000000000000000000000000000000001000000010000000180BE010000000000000C000000000000000000000000000000000100000001000000
+
+
+
+ 59400
+ Debug
+
+ 2373
+ 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000000000000100000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000000000000100000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000000000000100000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F720100000000000000000000000100000001000000000000000000000001000000000000000000054465627567FF7F0000
+
+
+ 898
+ 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC88000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801780000000000000FFFFFFFF00010000000000000001000000000000000100000001801D80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001801A80000000000000FFFFFFFF00010000000000000001000000000000000100000001801B80000000000000FFFFFFFF0001000000000000000100000000000000010000000180E57F000000000000FFFFFFFF00010000000000000001000000000000000100000001801C80000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800089000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF0000000000000000000100000000000000010000000180E48B000000000000FFFFFFFF0001000000000000000100000000000000010000000180F07F000000000000FFFFFFFF0001000000000000000100000000000000010000000180E888000000000000FFFFFFFF00010000000000000001000000000000000100000001803B01000000000000FFFFFFFF0001000000000000000100000000000000010000000180BB8A000000000000FFFFFFFF0001000000000000000100000000000000010000000180D88B000000000000FFFFFFFF0001000000000000000100000000000000010000000180D28B000000000000FFFFFFFF00010000000000000001000000000000000100000001809307000000000000FFFFFFFF0001000000000000000100000000000000010000000180658A000000000000FFFFFFFF0001000000000000000100000000000000010000000180C18A000000000000FFFFFFFF0001000000000000000100000000000000010000000180EE8B000000000000FFFFFFFF00010000000000000001000000000000000100000001800000000000000000FFFFFFFF00000000000000000001000000000000000100000001800189000000000000FFFFFFFF000100000000000000010000000000000001000000
+
+
+ 898
+ 1900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000000000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000000100000000000000000000000000000000010000000100000001801D800000000000000200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000000300000000000000000000000000000000010000000100000001801B80000000000000040000000000000000000000000000000001000000010000000180E57F0000000000000500000000000000000000000000000000010000000100000001801C800000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000000700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B000000000000080000000000000000000000000000000001000000010000000180F07F000000000000090000000000000000000000000000000001000000010000000180E8880000000000000A00000000000000000000000000000000010000000100000001803B010000000000000B0000000000000000000000000000000001000000010000000180BB8A0000000000000C0000000000000000000000000000000001000000010000000180D88B0000000000000D0000000000000000000000000000000001000000010000000180D28B0000000000000E000000000000000000000000000000000100000001000000018093070000000000000F0000000000000000000000000000000001000000010000000180658A000000000000100000000000000000000000000000000001000000010000000180C18A000000000000110000000000000000000000000000000001000000010000000180EE8B0000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180018900000000000013000000000000000000000000000000000100000001000000
+
+
+
+ 0
+ 1707
+ 1067
+
+
+
+
+
+ 1
+ 0
+
+ 100
+ 0
+
+ ..\SAS_Code\naive_chassis_task.c
+ 0
+ 236
+ 237
+ 1
+
+ 0
+
+
+
+
+
diff --git a/InfantryTest/MDK-ARM/standard_robot.uvoptx b/InfantryTest/MDK-ARM/standard_robot.uvoptx
index 3ade1c63f521193ecf41bc5eab9fd532e088aad6..555acad7ac1cff39b714f66ceb981479a623aa38 100644
--- a/InfantryTest/MDK-ARM/standard_robot.uvoptx
+++ b/InfantryTest/MDK-ARM/standard_robot.uvoptx
@@ -196,7 +196,7 @@
Application/User
- 1
+ 0
0
0
0
diff --git a/InfantryTest/MDK-ARM/standard_robot.uvprojx b/InfantryTest/MDK-ARM/standard_robot.uvprojx
index b075847043439c77b7ce7a306b037d7afb3ef85d..cd23d913a5630121da4353cc5a3defa8c4d2f18a 100644
--- a/InfantryTest/MDK-ARM/standard_robot.uvprojx
+++ b/InfantryTest/MDK-ARM/standard_robot.uvprojx
@@ -15,8 +15,8 @@
STM32F407IGHx
STMicroelectronics
- Keil.STM32F4xx_DFP.2.15.0
- http://www.keil.com/pack/
+ Keil.STM32F4xx_DFP.2.12.0
+ http://www.keil.com/pack
IRAM(0x20000000-0x2001FFFF) IRAM2(0x10000000-0x1000FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(25000000) FPU2 CPUTYPE("Cortex-M4")
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/adc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/adc.crf
index 5f32070782f5a60482c81869b0c8eb940d9ff059..df8c4eb4ce4965f9939231e54099015e1da6c9a8 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/adc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/adc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/ahrs_middleware.crf b/InfantryTest/MDK-ARM/standard_tpye_c/ahrs_middleware.crf
index 7fea23074949e152f013ecef436c28cd1c045ffd..461717339ec210b59a4daa11ada1af0ef887be4e 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/ahrs_middleware.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/ahrs_middleware.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bmi088driver.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bmi088driver.crf
index 03476016b365f7fc528767faba8e88caf0d60f02..da601c1a9480ff0f51505acfe2ab1919ab0ab470 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bmi088driver.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bmi088driver.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bmi088middleware.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bmi088middleware.crf
index b39e4a9d63879eb963df29809079db5b3537e150..93970209641e42903b83bbc1ba060fdd7f9c146f 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bmi088middleware.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bmi088middleware.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_adc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_adc.crf
index 566cfa4e64fbb51a682c256d513429a55063b103..aa4275d84379c0c8d913d043d10d41cff964b1ce 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_adc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_adc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_buzzer.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_buzzer.crf
index 7b908ae788d807fdcea799ae5793b9da540398c3..c01513b05985e4b4d77e866505f3c5a3f6b5a5c5 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_buzzer.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_buzzer.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_can.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_can.crf
index 651071162b7fce8c048433db4a7be5b001e1fdbe..9f4b9b5d27c3ffbab5b79b5ee7a1d5d570333bdb 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_can.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_can.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_crc32.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_crc32.crf
index 08ebd18e4fdfdca0ad39b92cea2f759124ed28c6..3a47613e8db45d5a63df702670e35dcd1b7e6fb2 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_crc32.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_crc32.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_delay.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_delay.crf
index 32c8c7ec1c7d4f8bc42816cf5a6933f37aa9ce94..31558037f12bc496b5c6a28ac2c42b7aefad45de 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_delay.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_delay.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_flash.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_flash.crf
index 23d2ef5e3871c4a23ad7c18c4a5faf86a7d523c7..36fd718413173263735692d5ebfe8b656eaebbbd 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_flash.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_flash.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_fric.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_fric.crf
index 4d9a058aba6890677ecadf626a1edf132e035ef4..69a41b083709cff8feef6f84383f2533a0d468ce 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_fric.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_fric.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_i2c.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_i2c.crf
index 576a0593d6eb092477dd3e01933307333f720d93..e63cb4f6630037d4c89e842bb97429877d0f72e6 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_i2c.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_i2c.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_imu_pwm.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_imu_pwm.crf
index 86863c2ef08bc2a588a2fedd0788e218ed4ce865..4ed2850cdef5c9efd57780c9fd6d06d41e124e5b 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_imu_pwm.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_imu_pwm.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_laser.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_laser.crf
index 85ece275b4ab7fafb8da352d8d04905770b5a78c..d257da0bab32f8c64f93e21be2996382d5f97f69 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_laser.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_laser.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_led.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_led.crf
index 8b9baa06bd9ddb39f3b29b8ee58cc46eed602a1c..319069f0752a31849957b65c2b34e7fa4b2e248b 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_led.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_led.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_nuccom.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_nuccom.crf
index 15645b5bb6f563b6574bbcec1181b06bb3ede9a2..d7b902c5b276c526a5e7ceaeec12793cd076d59f 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_nuccom.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_nuccom.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_rc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_rc.crf
index 353b1508d9e919740c8fe91c713659c286f9bf9a..75c4257ff0f7efabee01ce717e781c3c16617dac 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_rc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_rc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_rng.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_rng.crf
index 7f5fd8e382678e9b0201f4feb0ed51e422b52276..7a77d4fbfa6d633f3db89aafc3fd257d93fb4b40 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_rng.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_rng.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_servo_pwm.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_servo_pwm.crf
index 32da1bfe9a9055cb04ae298d5bed176c1ec02101..119a64f57be365c14449e77551f49c360b66da21 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_servo_pwm.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_servo_pwm.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_spi.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_spi.crf
index 82abcc65d517280e9b4701237d30b51c1860be32..2e86c156b14119efc41222f002f7b25e698c21a2 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_spi.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_spi.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_usart.crf b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_usart.crf
index 2368ee73b10d2c12e81e86c8ccfa1df644ab63fe..44b63d3a87ec5ebcdac305de1894fa39def1ccf0 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/bsp_usart.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/bsp_usart.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/calibrate_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/calibrate_task.crf
index b911d33863cd9cc8306132e3869d37e69d62c833..db6fee36d010dc3138c7fdebac9d842c602b822c 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/calibrate_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/calibrate_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/can.crf b/InfantryTest/MDK-ARM/standard_tpye_c/can.crf
index b6fd3fcd652ab2dfd63bedb9ff45133fe08d7ccc..c15730a0799bac22a291f177a6e6ee23e2116227 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/can.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/can.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/can_receive.crf b/InfantryTest/MDK-ARM/standard_tpye_c/can_receive.crf
index e522ddfb896ab46ef413a7e3e4a316fc2ea80318..8d962b62f9005283853259ee888f14e23c9e1974 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/can_receive.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/can_receive.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/cmsis_os.crf b/InfantryTest/MDK-ARM/standard_tpye_c/cmsis_os.crf
index 2104f84f10cc77921e59bac52ef4b5fce4cf1aec..9b98c6b66caa80b9f743969595cfb88cd0b02343 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/cmsis_os.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/cmsis_os.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/crc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/crc.crf
index 48d1e1168f57eb4742591953144e2cee01e73cc2..b5576f0b8d80d0cb79e908e7e78497618ae4bee5 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/crc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/crc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/crc8_crc16.crf b/InfantryTest/MDK-ARM/standard_tpye_c/crc8_crc16.crf
index d376d36d090fbebf77d99b7dde0ad30a2c4abd25..941d38ce96cf8b26dcc0a15e508fb5cecae0ecdc 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/crc8_crc16.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/crc8_crc16.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/croutine.crf b/InfantryTest/MDK-ARM/standard_tpye_c/croutine.crf
index 7b246f93df17e5d5e67565b7c73c9c1c8cff3c34..f0db2a625fe4a49086467d45cda6f4dfacc98aa1 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/croutine.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/croutine.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/detect_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/detect_task.crf
index 2734ee1fc7600d3551c31bc798e271a64ed2bbad..aad118d088eab0db32b4ebe4f67ac5edd13f055f 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/detect_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/detect_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/dma.crf b/InfantryTest/MDK-ARM/standard_tpye_c/dma.crf
index afc5bbb0c837eed3003e3ed6e966179b33ef9f0c..04af3fa6c621e63adcb4c63091272a6f7f132c3f 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/dma.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/dma.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/event_groups.crf b/InfantryTest/MDK-ARM/standard_tpye_c/event_groups.crf
index bee305bca407d65c7a57d04b74b7da2fe4019f51..4b1108ff54e64ee529b765a307d800fe2c30a533 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/event_groups.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/event_groups.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/fifo.crf b/InfantryTest/MDK-ARM/standard_tpye_c/fifo.crf
index f8c4b430c9090a1021f74889de7898b6a0879d8f..62f7844f0082c78455889545a8ee7627dbc580b9 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/fifo.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/fifo.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/freertos.crf b/InfantryTest/MDK-ARM/standard_tpye_c/freertos.crf
index 3d8017df8ef60c7ff30bd29efd49057290b3dd7f..abedc0fa25942836817b11f0c2ba8aa9fee40a30 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/freertos.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/freertos.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/gpio.crf b/InfantryTest/MDK-ARM/standard_tpye_c/gpio.crf
index 373e14a44886cc31ccf80f93533807fc1996738e..342921dfea284b208f14488728e82e96ce053347 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/gpio.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/gpio.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/heap_4.crf b/InfantryTest/MDK-ARM/standard_tpye_c/heap_4.crf
index 1198e031013c44f3963504784238218006be402d..28c9196013d28e471a57c6b7faf4cb5c67213cb2 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/heap_4.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/heap_4.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/i2c.crf b/InfantryTest/MDK-ARM/standard_tpye_c/i2c.crf
index cecbf043425f2384b26ab888fea7b644816c74b5..7b9209983caa188606d6974f534873ca6b1262d9 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/i2c.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/i2c.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/ins_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/ins_task.crf
index a479bc413cff7aeb3f8870d1f0319239d047462c..2295ea2b2f1b28c759bc26ebd84cb7f978e586eb 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/ins_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/ins_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/ist8310driver.crf b/InfantryTest/MDK-ARM/standard_tpye_c/ist8310driver.crf
index e3caed112960dee5133648eaf26af0db9d251dbd..5fe8efb2330e73e589803f78350333fa845c7eb8 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/ist8310driver.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/ist8310driver.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/ist8310driver_middleware.crf b/InfantryTest/MDK-ARM/standard_tpye_c/ist8310driver_middleware.crf
index 8a276fba1b95caf1b0a7a8c7720751f351217884..1ceebfbda95b9ca831adf9b2a7b3dab08ca3dd44 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/ist8310driver_middleware.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/ist8310driver_middleware.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/led_flow_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/led_flow_task.crf
index c818042ef629d43fcb1311ca8af8758e0e477621..22ad17aaf0bb6d058fb1688d146031ee7f520fcb 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/led_flow_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/led_flow_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/list.crf b/InfantryTest/MDK-ARM/standard_tpye_c/list.crf
index 0c9f1cb4572bd052f86f12212cb346c0f9a3579c..011a4e216c66e8fe4ff8e46de88d6887a9611537 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/list.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/list.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/main.crf b/InfantryTest/MDK-ARM/standard_tpye_c/main.crf
index 2082d58b83427a6b734bb1b8d115e2db5ce4c1bf..58128ce649bbf30328edf24227b288dc7ebb5462 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/main.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/main.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/mem_mang4.crf b/InfantryTest/MDK-ARM/standard_tpye_c/mem_mang4.crf
index 0a71d6bcb1f6b828ad2bb2077733c27c7aaa7951..c0ed161835f59ac8a2ae341a7154396ed41892f4 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/mem_mang4.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/mem_mang4.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/naive_chassis_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/naive_chassis_task.crf
index 53fbd623e26d5b82ade77175831ceac7b9a34d7a..70b814fa309c2853f1d99c5b6c085dd6df2e29ac 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/naive_chassis_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/naive_chassis_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/naive_gimbal_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/naive_gimbal_task.crf
index 18bd4aefafadebfc5c9ec0042b41a11163e7d61a..91f63aded45cb9d2604290849ab50247a70f0aa9 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/naive_gimbal_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/naive_gimbal_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/naive_shoot_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/naive_shoot_task.crf
index 95ec7be4d4acfb56c4d7d89f30150dda42949fe3..f2d3e5b32b98e8f9a51e45e686f56811a0012408 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/naive_shoot_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/naive_shoot_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/nuccommu.crf b/InfantryTest/MDK-ARM/standard_tpye_c/nuccommu.crf
index dd7756d33f14644deb027bfabb3736bd76cc896c..db1bf3cdada82aa827baf5539d90ff9960e7a64d 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/nuccommu.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/nuccommu.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/oled.crf b/InfantryTest/MDK-ARM/standard_tpye_c/oled.crf
index c682c29da1b7ea0447be99e5fddb2fb64ae4d03c..8acd87b8a9080490e5ae41dcee5eb8a26c2044ec 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/oled.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/oled.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/oled_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/oled_task.crf
index e1c53c1d5f23e0a5a613f15479fc0bf273c6d34c..e7292313611bec9f9457a30d47dfcfa982e7ad3e 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/oled_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/oled_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/pid.crf b/InfantryTest/MDK-ARM/standard_tpye_c/pid.crf
index 0cedf6d3128644b432b34ec166690d815931f96b..fa06fafa60f00588ef286561209d62838cac8afc 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/pid.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/pid.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/port.crf b/InfantryTest/MDK-ARM/standard_tpye_c/port.crf
index cd49dde5b9995c6a4a025610efdf46f61ab71479..6280863ec0e8be24d4f723860baa7c4a705d12e0 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/port.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/port.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/queue.crf b/InfantryTest/MDK-ARM/standard_tpye_c/queue.crf
index cdab1799b176dc38720e44000ddd30a1d0bea633..912e949aab7ff69062ae88ed484e5ce132f3ea56 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/queue.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/queue.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/referee.crf b/InfantryTest/MDK-ARM/standard_tpye_c/referee.crf
index def4bdc86ce9dcc981f9f08e0ee29ad0d32a0418..382ce1fa64f88ceae1ae173e392ce1a0b7b172cf 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/referee.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/referee.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/referee_usart_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/referee_usart_task.crf
index e62cc4a5be92ee5aab91a5821df508db90725cb2..2cdae102d0a7b2f2854a2218e90de884df867bf2 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/referee_usart_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/referee_usart_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/remote_control.crf b/InfantryTest/MDK-ARM/standard_tpye_c/remote_control.crf
index ce473e503a9d98296ca0af312ad781cc26116244..b05ea8de18334f5be537acfc980b3a3c9201ddd2 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/remote_control.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/remote_control.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/rng.crf b/InfantryTest/MDK-ARM/standard_tpye_c/rng.crf
index 0002f9e25b157c51211e9070ffdff00341b48fd9..79740f427c37a8e61602897f5c95aa3662d027da 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/rng.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/rng.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/robot_total_mode.crf b/InfantryTest/MDK-ARM/standard_tpye_c/robot_total_mode.crf
index b2d292dddfdd4a85f14cad5ba9e64dbfb2f539dd..9a27b58b21a8fdeaf23cc479382e73f6271ac6d1 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/robot_total_mode.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/robot_total_mode.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/rtc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/rtc.crf
index fea3245db303e6ade3fe1e4a572943d96997ed27..07e7dcdb3f257c2925cd042c93900ffe5bc4410d 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/rtc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/rtc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/servo_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/servo_task.crf
index 84f75e072fbad6de94faa80287f7c4b9c706f615..d497fac6dd226669f5f7f29e91470d25d04eb36f 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/servo_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/servo_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/spi.crf b/InfantryTest/MDK-ARM/standard_tpye_c/spi.crf
index 28d678d8d5c43ca0124fed5e04d816f8b23ab7f3..1dde0731f54c293f501abe89c619587d9bac8892 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/spi.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/spi.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal.crf
index c8770cfc26948f2bb56a620f74f3adcd4b91bcad..46fca09951d4bc3ff9df6fbb1e73234c3f89c3c6 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_adc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_adc.crf
index d7159e523c1d2d22fb7317f86cbb7b9324bd53e8..97869cad04b5d10acfd433ed3684f0aad396469a 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_adc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_adc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_adc_ex.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_adc_ex.crf
index c0e001387312e7103041cccb70d88e70e0fde22f..0ec4c03c38c3cfdfcd1392aead15bef29254d708 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_adc_ex.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_adc_ex.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_can.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_can.crf
index 4cd2d6545902d2c862e694b765767c81bd558884..4f43bff7ecf8e477bf60d6f55c2f5001788e95f6 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_can.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_can.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_cortex.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_cortex.crf
index b20f94e8f97af68e7d978c11e31ee81d4cf2adea..39f418f12ac4fe1cc1e5908fedac911dcf5edddb 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_cortex.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_cortex.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_crc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_crc.crf
index d1595fd91712b235d11ba0775005787c7e0b9e0e..bf1e2c20c15478b35a7925ea443e3c1f57df6bbf 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_crc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_crc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_dma.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_dma.crf
index 2e1d0195b50529bd05520df82c989b21af41b8d6..95f54d77525dbd3efa2828d5bd32e2d2b53e990d 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_dma.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_dma.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_dma_ex.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_dma_ex.crf
index c7c5f06a20feba1cdde7501f3c304cbcfb6b14e8..6e2a070e1cfe22fb9bee1b8e4927d1739f57348c 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_dma_ex.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_dma_ex.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_exti.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_exti.crf
index 4ba4afbc04263488eb8d75739a0916dc55d1d761..b240cf9fa6a59e1135a8c0b7ca60b46a01ade438 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_exti.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_exti.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash.crf
index 0e6e1e3f3b67d4b360fda4b22cee25517d52e044..254fffdd47266cf8096ec97b92abe03d9f83c0b8 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash_ex.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash_ex.crf
index cdb90ecf6a4bc2d74542767b682da0d0f9488624..fb04c0e3dfca4504a2e9466c9286ad0d0e9ccf7f 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash_ex.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash_ex.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash_ramfunc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash_ramfunc.crf
index 22567b40aa1068d2cd6751fa68fa09c52967754b..61c063a9d38268014adc30f230fe90882547748d 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash_ramfunc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_flash_ramfunc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_gpio.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_gpio.crf
index 4542ca0e1cc796c7d0311836fe8cd4fcf1f397e7..ee818ff9654a7985ec0231ad906ab8fa6a866e98 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_gpio.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_gpio.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_i2c.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_i2c.crf
index a57e4e84cb56a0693643aac34ded59cf5a26527a..92dbc47d93b4e096042ed2acea00ef0e2d0c90e2 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_i2c.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_i2c.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_i2c_ex.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_i2c_ex.crf
index 6e80f84a2dd13d4e1cae7418846f95ead001f3b7..4b843dfc839c2be370c66ad47afab1e73ea137a5 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_i2c_ex.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_i2c_ex.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_msp.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_msp.crf
index c5bea2da386cd1129ba863ede84e80ce7f7333fb..0fb1d927eee4c43d73621d8f021150daccd5c256 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_msp.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_msp.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pcd.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pcd.crf
index 618c4d12b350ee6ccf33059222c206e92254d932..be4220f3244726c8234e0814a48a881823a47b4d 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pcd.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pcd.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pcd_ex.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pcd_ex.crf
index 3815c248eb15f7bb3dfb5651f2b6d39c67de523e..c20b66a0e86d7c73c31d03d97171acd83e58f5ce 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pcd_ex.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pcd_ex.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pwr.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pwr.crf
index fea5f9c277fafb825d53a29eb6c6297fab1b94f9..d65deb0cac65d3e75a4ee72008409bfbcdf3355a 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pwr.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pwr.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pwr_ex.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pwr_ex.crf
index 8446f97674b57aaf2685a718624b2e7eb618ca64..1d392537ea67c03ab7a904f988f1cabee3f6b584 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pwr_ex.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_pwr_ex.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rcc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rcc.crf
index 8b2ebcdcda9cc8959aaef25b02e76fe2dea05c79..fb89f76af9064e7a410725fc7759f35a93f04fe7 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rcc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rcc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rcc_ex.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rcc_ex.crf
index 4881f82a3de716cf1a90c42874dcf18d2f6ada3d..14fa350a5e9b6831e834dd0716df50d56e3930aa 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rcc_ex.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rcc_ex.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rng.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rng.crf
index d09377851d1fe33f0b1fc2a1a242cd680c4a6962..c6187e799f044319e58181ad47545d11f5b6adbf 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rng.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rng.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rtc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rtc.crf
index 5210f0b37d427eb8a83895b89e6ca3983756cfe3..4750ea20c34e318a9c9fc1dadcebfeeb74d85d94 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rtc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rtc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rtc_ex.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rtc_ex.crf
index 0a9907e090ca11e83d9e3673d207bf0b8e7d7e32..f1545b39947ed758894486eafe98da5dc09255c4 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rtc_ex.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_rtc_ex.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_spi.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_spi.crf
index 050c82d5344deba7d775cc308b6cdf6efe67367e..9cfd55ab3a8fd25a4111a8e00f1cd4d6a2233b44 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_spi.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_spi.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_tim.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_tim.crf
index 96761aca0053f8e6dc12bf6652313493ef5f3028..64f09b710326debc46f49b56c9af84af893ed061 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_tim.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_tim.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_tim_ex.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_tim_ex.crf
index 1be78bf8e2b67445e2159ed2be99d6b4b00fe761..3859947e5cad4d1a59c2d24eeeb140ea6524cdd0 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_tim_ex.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_tim_ex.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_uart.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_uart.crf
index 50f07ec8084b13bb9ab49d44f23b32b848785e36..eb981f5682b66d6e4e044a363db762335cc20a5e 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_uart.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_hal_uart.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_it.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_it.crf
index bb6a2f3d80eb4343a1c15b70826157264195d43d..7b2490328847305a57bc0c66228cb7b53f7cc615 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_it.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_it.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_ll_usb.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_ll_usb.crf
index cb14bd8d305c325dd9a4d424b83af13fdab32f49..b162ae077fdf3d66c8d1cd448a42151ce1ad9dfd 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_ll_usb.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stm32f4xx_ll_usb.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/stream_buffer.crf b/InfantryTest/MDK-ARM/standard_tpye_c/stream_buffer.crf
index cdd3709cfcb5bed1b1e964dd4bc845c24c0e3153..16f9d3988dc7fcc0f2427c353f58848c63a34316 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/stream_buffer.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/stream_buffer.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/system_stm32f4xx.crf b/InfantryTest/MDK-ARM/standard_tpye_c/system_stm32f4xx.crf
index 54d55e3a5fb656f1555ca321939a7c3cb0af8d9c..04ab3fcae592fca8340251f1af544d29470d1d4c 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/system_stm32f4xx.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/system_stm32f4xx.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/tasks.crf b/InfantryTest/MDK-ARM/standard_tpye_c/tasks.crf
index 0515d4a8c1af3aa7696d61829c2d57095fedcd62..a873d8d1950010ec75041fc5ec7905c7d7f77b58 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/tasks.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/tasks.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/test_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/test_task.crf
index 6e24b8c2e62f91deafbaea7940a305ec5fd6a0b4..7a0699b6a787ab5a39b12fb7f168760d14e395d4 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/test_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/test_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/tim.crf b/InfantryTest/MDK-ARM/standard_tpye_c/tim.crf
index c9896b2bf174408b7aaf336198d19fe6c714227c..9f946f1731647cdaab1eea4a434c38fa17accec7 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/tim.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/tim.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/timers.crf b/InfantryTest/MDK-ARM/standard_tpye_c/timers.crf
index a6439ffd1b4104e85232f1db513b8940e48fcfb4..8ba76e0005658a8ab775de29dcd957be4e8dbabf 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/timers.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/timers.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/usart.crf b/InfantryTest/MDK-ARM/standard_tpye_c/usart.crf
index bb918762d3b3e6356f48164a7e73a93e3f300d14..b8d83b968f5f246bdbdedb33b1431093cb777335 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/usart.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/usart.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/usb_device.crf b/InfantryTest/MDK-ARM/standard_tpye_c/usb_device.crf
index 37f4ec9dc9f58a2bcc49dd99397549373aaa721e..2be36b089088e04e6bd094e43ad3adcfb5d33235 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/usb_device.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/usb_device.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/usb_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/usb_task.crf
index 8cde65d700a185dbdfd45322c5d6b4c0dceffebf..e0539ce6510edff69f52c2abf7773e6864fa14f4 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/usb_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/usb_task.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_cdc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_cdc.crf
index 5818ebce6439dad0037f7c9bee6bc440fa0d9666..a560dea6d16af17ef758009e347d3a5d8ae9b91b 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_cdc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_cdc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_cdc_if.crf b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_cdc_if.crf
index e83d87129d168dc6bd6cd42f6122036b40c8416a..524d48b8cac30a98c88231e4ea3cc232db49bc57 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_cdc_if.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_cdc_if.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_conf.crf b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_conf.crf
index b7bb68f8a0f982ad384762a18fed4b13a648cb38..3c5e524eb74621e6b5996d4594f44f04d3f3ba85 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_conf.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_conf.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_core.crf b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_core.crf
index 9ce97e45ca4d41e0ac48b5ad96f58dad02811781..d4abe7d8e98930aeba5674dd4a38a91258b6cfa8 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_core.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_core.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_ctlreq.crf b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_ctlreq.crf
index 9d0a04d6f00f1dc429958a9b1141cbd3d8385d9d..173f5e0eb9835f494bb38524f1cf282f65e0ca35 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_ctlreq.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_ctlreq.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_desc.crf b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_desc.crf
index 8e06bfe534c63fdbecb7dc9614b2a8d62da41dd4..f6b8506a741b4a2fb91568126a7a5a4e9243f627 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_desc.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_desc.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_ioreq.crf b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_ioreq.crf
index 039ae7cdb0c47537f79a487a7784a7461c459ea7..409ec425a3befe95e7f08cd4bdfb3c12bbe43bde 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/usbd_ioreq.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/usbd_ioreq.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/user_lib.crf b/InfantryTest/MDK-ARM/standard_tpye_c/user_lib.crf
index 62f6721db0913aad3957f1b5b37b338d7e650818..12aa67297f696f5ceb3da3589284ddaa58be48a1 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/user_lib.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/user_lib.crf differ
diff --git a/InfantryTest/MDK-ARM/standard_tpye_c/voltage_task.crf b/InfantryTest/MDK-ARM/standard_tpye_c/voltage_task.crf
index f21f62f20a43e9da70e8a308e73dc7249ae1662b..1fdffff8d5138654a9564a26996ff144c3f32716 100644
Binary files a/InfantryTest/MDK-ARM/standard_tpye_c/voltage_task.crf and b/InfantryTest/MDK-ARM/standard_tpye_c/voltage_task.crf differ
diff --git a/InfantryTest/SAS_Code/CAN_receive.c b/InfantryTest/SAS_Code/CAN_receive.c
index 6649c694d33a77bb37b4f2ac57d56c27011fc756..c8acffb87e6ae76ca9760d3cfadd6eb9ad56d587 100644
--- a/InfantryTest/SAS_Code/CAN_receive.c
+++ b/InfantryTest/SAS_Code/CAN_receive.c
@@ -66,6 +66,7 @@ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
//get motor id
//根据我们实际使用的修改
i = rx_header.StdId - CAN_3508_M1_ID;
+ /*
if((hcan==&SHOOT_CAN)&&(i==0||i==1))
{
get_motor_measure(&motor_shoot[i],rx_data);
@@ -73,7 +74,7 @@ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
detect_hook(FRIC1_TOE + i);
break;
}
-
+ */
get_motor_measure(&motor_chassis[i], rx_data);
detect_hook(CHASSIS_MOTOR1_TOE + i);
// detect_hook(FRIC1_TOE);
@@ -163,7 +164,7 @@ void CAN_cmd_chassis(int16_t motor1, int16_t motor2, int16_t motor3, int16_t mot
chassis_can_send_data[6] = motor4 >> 8;
chassis_can_send_data[7] = motor4;
- HAL_CAN_AddTxMessage(&CHASSIS_CAN, &chassis_tx_message, chassis_can_send_data, &send_mail_box);
+ HAL_CAN_AddTxMessage(&GIMBAL_CAN, &chassis_tx_message, chassis_can_send_data, &send_mail_box);
}
void CAN_cmd_shoot(int16_t motor5, int16_t motor6)
@@ -252,3 +253,8 @@ const motor_measure_t *get_shoot_motor_measure_point(uint8_t i)
return &motor_shoot[(i & 0x03)];
}
+void OLED_canreceive(){
+ OLED_printf(0,0,"AAAAAAAAAAAAAAAAAAAAmotor1:%d,motor2:%d,motor3:%d,motor4:%d",(int32_t)motor_chassis[0].speed_rpm,(int32_t)motor_chassis[1].speed_rpm,
+ (int32_t)motor_chassis[2].speed_rpm,(int32_t)motor_chassis[3].speed_rpm);
+}
+
diff --git a/InfantryTest/SAS_Code/CAN_receive.h b/InfantryTest/SAS_Code/CAN_receive.h
index c982b0da1ec20b9db19cc100418fd7050259ce2c..0bdc43aab31b6cd01c7bbecc13ccce1918c012dd 100644
--- a/InfantryTest/SAS_Code/CAN_receive.h
+++ b/InfantryTest/SAS_Code/CAN_receive.h
@@ -78,6 +78,8 @@ extern void CAN_cmd_chassis(int16_t motor1, int16_t motor2, int16_t motor3, int1
*/
extern void CAN_cmd_shoot(int16_t motor5, int16_t motor6);
+extern void OLED_canreceive();
+
// 用于给外面的函数提供数据
diff --git a/InfantryTest/SAS_Code/chassis_task.h b/InfantryTest/SAS_Code/chassis_task.h
index ae71a29f7fb52bc58995cb06429a1c78b93a1b2b..eed7b908e2717335185958af7d806205e6908637 100644
--- a/InfantryTest/SAS_Code/chassis_task.h
+++ b/InfantryTest/SAS_Code/chassis_task.h
@@ -4,5 +4,6 @@
void chassis_task(void const *pvParameters);
void OLED_chassis_speed(void);
void OLED_chassis_yaw_ecd(void);
+void OLED_chassis_current(void);
#endif
diff --git a/InfantryTest/SAS_Code/naive_chassis_task.c b/InfantryTest/SAS_Code/naive_chassis_task.c
index fb7effd9f1bb3033e93eda5fec3a322d65fc20ee..c4bd08c9b53cbe30d468af7680f0b25bbceccf8c 100644
--- a/InfantryTest/SAS_Code/naive_chassis_task.c
+++ b/InfantryTest/SAS_Code/naive_chassis_task.c
@@ -89,19 +89,18 @@
#define ECD_FULL_ROUND 8192 //一圈的ECD值。实际取值0-8191
-//****************************控制量计算系数************//
// #define CHASSIS_VX_RC_SEN 0.0005f //把遥控器摇杆读数转化为速度的系数。遥控器-660~+660.可得最大0.33m/s
// #define CHASSIS_VY_RC_SEN -0.0005f //是负数,遥控器向左拉,向左平移,遥控器摇杆读数为负,在坐标系中为向y正方向
// #define CHASSIS_WZ_RC_SEN -0.0005f //最大旋转线速度。0.33m/s //是负数。遥控器右拉,向右转
-#define CHASSIS_VX_RC_SEN 0.0025f //把遥控器摇杆读数转化为速度的系数。遥控器-660~+660.可得最大0.33m/s
-#define CHASSIS_VY_RC_SEN -0.0025f //是负数,遥控器向左拉,向左平移,遥控器摇杆读数为负,在坐标系中为向y正方向
-#define CHASSIS_WZ_RC_SEN -0.0025f //最大旋转线速度。0.33m/s //是负数。遥控器右拉,向右转
+#define CHASSIS_VX_RC_SEN 0.001f //把遥控器摇杆读数转化为速度的系数。遥控器-660~+660.可得最大0.33m/s
+#define CHASSIS_VY_RC_SEN -0.001f //是负数,遥控器向左拉,向左平移,遥控器摇杆读数为负,在坐标系中为向y正方向
+#define CHASSIS_WZ_RC_SEN -0.001f //最大旋转线速度。0.33m/s //是负数。遥控器右拉,向右转
#define CHASSIS_RC_DEADLINE 10 //低于这个值的摇杆读数一律为0
-#define MOTOR_SPEED_TO_CHASSIS_SPEED_VX 0.25f //电机旋线速度转化为机器人底盘速度。麦轮直径15cm,半径8cm
+// #define MOTOR_SPEED_TO_CHASSIS_SPEED_VX 0.25f //电机旋线速度转化为机器人底盘速度。麦轮直径15cm,半径8cm
#define MOTOR_SPEED_TO_CHASSIS_SPEED_VY 0.25f
#define MOTOR_SPEED_TO_CHASSIS_SPEED_WZ 0.25f
@@ -113,7 +112,7 @@
//***************************PID控制参数*****************//
#define MAX_MOTOR_CAN_CURRENT 15000.0f //底盘3508最大can发送电流值
//底盘电机速度环PID
-#define M3505_MOTOR_SPEED_PID_KP 1600000.0f
+#define M3505_MOTOR_SPEED_PID_KP 10000.0f
#define M3505_MOTOR_SPEED_PID_KI 0.0f
#define M3505_MOTOR_SPEED_PID_KD 0.0f
#define M3505_MOTOR_SPEED_PID_MAX_OUT MAX_MOTOR_CAN_CURRENT
@@ -349,9 +348,9 @@ static void calcWheelVelocityInChassisAxis(void) //将控制量中的坐标系
fp32 vwy;
vwy = CHASSIS_OMNIWHELL_R * CHASSIS_OMNIWHELL_SINALPHA * w;
driveMotor[0].wantedMotorSpeed = (vx - vwx) * CHASSIS_OMNIWHELL_SINTHETA - (vy + vwy) * CHASSIS_OMNIWHELL_COSTHETA;
- driveMotor[1].wantedMotorSpeed = (vx + vwx) * CHASSIS_OMNIWHELL_SINTHETA + (vy + vwy) * CHASSIS_OMNIWHELL_COSTHETA;
+ driveMotor[1].wantedMotorSpeed =-((vx + vwx) * CHASSIS_OMNIWHELL_SINTHETA + (vy + vwy) * CHASSIS_OMNIWHELL_COSTHETA);
+ driveMotor[2].wantedMotorSpeed =-((vx + vwx) * CHASSIS_OMNIWHELL_SINTHETA - (vy - vwy) * CHASSIS_OMNIWHELL_COSTHETA);
driveMotor[3].wantedMotorSpeed = (vx - vwx) * CHASSIS_OMNIWHELL_SINTHETA + (vy - vwy) * CHASSIS_OMNIWHELL_COSTHETA;
- driveMotor[2].wantedMotorSpeed = (vx + vwx) * CHASSIS_OMNIWHELL_SINTHETA - (vy - vwy) * CHASSIS_OMNIWHELL_COSTHETA;
}
static void firstOrderFilt()
@@ -494,9 +493,7 @@ void chassis_task(void const *pvParameters)
if(zeroCurrentMark)
CAN_cmd_chassis(0,0,0,0); //发送零电流
else
- // CAN_cmd_chassis(driveMotor[0].giveCurrent,driveMotor[1].giveCurrent,
- // -driveMotor[2].giveCurrent,-driveMotor[3].giveCurrent); //正常控制电机
- CAN_cmd_chassis(30000,30000,30000,30000);
+ CAN_cmd_chassis(driveMotor[0].giveCurrent,driveMotor[1].giveCurrent,driveMotor[2].giveCurrent,driveMotor[3].giveCurrent);
osDelay(CHASSIS_CONTROL_TIME_MS);
}
}
@@ -509,4 +506,9 @@ void OLED_chassis_yaw_ecd(void)
void OLED_chassis_speed(void)
{
OLED_printf(0,0,"W0:%d W1:%d W2:%d W3:%d",(int32_t)driveMotor[0].wantedMotorSpeed,(int32_t)driveMotor[1].wantedMotorSpeed,(int32_t)driveMotor[2].wantedMotorSpeed,(int32_t)driveMotor[3].wantedMotorSpeed);
+}
+
+void OLED_chassis_current(void){
+ OLED_printf(0,0,"current:m1:%d,m2:%d,m3:%d,m4:%d",(int32_t)driveMotor[0].giveCurrent,(int32_t)driveMotor[1].giveCurrent,
+ (int32_t)driveMotor[2].giveCurrent,(int32_t)driveMotor[3].giveCurrent);
}
\ No newline at end of file
diff --git a/InfantryTest/application/oled_task.c b/InfantryTest/application/oled_task.c
index 343d8b1fc91bcbb826bdedc0b08c0c3818b5d8d5..f322bbab239034d3e2eed1be0b2cc32e1a448da3 100644
--- a/InfantryTest/application/oled_task.c
+++ b/InfantryTest/application/oled_task.c
@@ -1,7 +1,7 @@
/**
****************************(C) COPYRIGHT 2019 DJI****************************
* @file oled_task.c/h
- * @brief OLED show error value.oledĻʾ
+ * @brief OLED show error value.oled��Ļ��ʾ������
* @note
* @history
* Version Date Author Modification
@@ -31,8 +31,9 @@
#define OLED_DETECT_OFFLINE_OFF
+
// #define SHOW_CHASSIS_DATA_YAW_ECD
-#define SHOW_CHASSIS_DATA_SPEED
+// #define SHOW_CHASSIS_DATA_SPEED
// #define SHOW_SHOOT_DATA
// #define SHOW_NUC_DATA
// #define SHOW_MODE_DATA
@@ -40,6 +41,8 @@
// #define SHOW_SERVO_DATA
// #define SHOW_REFEREE_DATA
// #define SHOW_RC_DATA
+#define SHOW_CHASSISECD_DATA
+// #define SHOW_CHASSISCURENT_DATA
const error_t *error_list_local;
@@ -193,6 +196,14 @@ void oled_task(void const * argument)
#ifdef SHOW_CHASSIS_DATA_SPEED
OLED_chassis_speed();
#endif
+
+#ifdef SHOW_CHASSISCURENT_DATA
+ OLED_chassis_current();
+#endif
+
+#ifdef SHOW_CHASSISECD_DATA
+ OLED_canreceive();
+#endif
OLED_refresh_gram();
diff --git a/InfantryTest/official_delete/chassis_power_control.c b/InfantryTest/official_delete/chassis_power_control.c
index 59f7eec877155c421ce1b1ef4140f194fb70853b..1abf9fa0105330de38ffc85e79e2eb41263f000e 100644
--- a/InfantryTest/official_delete/chassis_power_control.c
+++ b/InfantryTest/official_delete/chassis_power_control.c
@@ -120,14 +120,14 @@ void chassis_power_control(chassis_move_t *chassis_power_control)
//计算原本电机电流设定
for(uint8_t i = 0; i < 4; i++)
{
- total_current += fabs(chassis_power_control->motor_speed_pid[i].out);
+ total_current += fabs(chassis_power_control->motor_speed_[i].out);
}
if(total_current > total_current_limit)
{
fp32 current_scale = total_current_limit / total_current;
- chassis_power_control->motor_speed_pid[0].out*=current_scale;
+ chassis_power_control->motor_speed_[0].out*=current_scale;
chassis_power_control->motor_speed_pid[1].out*=current_scale;
chassis_power_control->motor_speed_pid[2].out*=current_scale;
chassis_power_control->motor_speed_pid[3].out*=current_scale;
diff --git a/InfantryTest/official_delete/chassis_task.c b/InfantryTest/official_delete/chassis_task.c
index 6f97fe06ab88e57fb7c38ef16e7584a6eebeded5..bdee5d6329e55f530fe929c90204d08c9ecbb28d 100644
--- a/InfantryTest/official_delete/chassis_task.c
+++ b/InfantryTest/official_delete/chassis_task.c
@@ -2,7 +2,7 @@
****************************(C) COPYRIGHT 2019 DJI****************************
* @file chassis.c/h
* @brief chassis control task,
- * ̿
+ * ���̿�������
* @note
* @history
* Version Date Author Modification
@@ -49,8 +49,8 @@
* @retval none
*/
/**
- * @brief ʼ"chassis_move"pidʼ ңָʼ3508̵ָʼ̨ʼǽǶָʼ
- * @param[out] chassis_move_init:"chassis_move"ָ.
+ * @brief ��ʼ��"chassis_move"����������pid��ʼ���� ң����ָ���ʼ����3508���̵��ָ���ʼ������̨�����ʼ���������ǽǶ�ָ���ʼ��
+ * @param[out] chassis_move_init:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_init(chassis_move_t *chassis_move_init);
@@ -61,8 +61,8 @@ static void chassis_init(chassis_move_t *chassis_move_init);
* @retval none
*/
/**
- * @brief õ̿ģʽҪ'chassis_behaviour_mode_set'иı
- * @param[out] chassis_move_mode:"chassis_move"ָ.
+ * @brief ���õ��̿���ģʽ����Ҫ��'chassis_behaviour_mode_set'�����иı�
+ * @param[out] chassis_move_mode:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_set_mode(chassis_move_t *chassis_move_mode);
@@ -73,19 +73,19 @@ static void chassis_set_mode(chassis_move_t *chassis_move_mode);
* @retval none
*/
/**
- * @brief ģʽı䣬ЩҪı䣬̿yawǶ趨ֵӦñɵǰyawǶ
- * @param[out] chassis_move_transit:"chassis_move"ָ.
+ * @brief ����ģʽ�ı䣬��Щ������Ҫ�ı䣬������̿���yaw�Ƕ��趨ֵӦ�ñ�ɵ�ǰ����yaw�Ƕ�
+ * @param[out] chassis_move_transit:"chassis_move"����ָ��.
* @retval none
*/
void chassis_mode_change_control_transit(chassis_move_t *chassis_move_transit);
/**
- * @brief chassis some measure data updata, such as motor speed, euler angle robot speed
+ * @brief chassis some measure data updata, such as motor speed, euler angle�� robot speed
* @param[out] chassis_move_update: "chassis_move" valiable point
* @retval none
*/
/**
- * @brief ̲ݸ£ٶȣŷǶȣٶ
- * @param[out] chassis_move_update:"chassis_move"ָ.
+ * @brief ���̲������ݸ��£���������ٶȣ�ŷ���Ƕȣ��������ٶ�
+ * @param[out] chassis_move_update:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_feedback_update(chassis_move_t *chassis_move_update);
@@ -97,7 +97,7 @@ static void chassis_feedback_update(chassis_move_t *chassis_move_update);
*/
/**
* @brief
- * @param[out] chassis_move_update:"chassis_move"ָ.
+ * @param[out] chassis_move_update:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_set_contorl(chassis_move_t *chassis_move_control);
@@ -108,8 +108,8 @@ static void chassis_set_contorl(chassis_move_t *chassis_move_control);
* @retval none
*/
/**
- * @brief ѭݿ趨ֵֵп
- * @param[out] chassis_move_control_loop:"chassis_move"ָ.
+ * @brief ����ѭ�������ݿ����趨ֵ������������ֵ�����п���
+ * @param[out] chassis_move_control_loop:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_control_loop(chassis_move_t *chassis_move_control_loop);
@@ -120,7 +120,7 @@ uint32_t chassis_high_water;
-//˶
+//�����˶�����
chassis_move_t chassis_move;
/**
@@ -129,20 +129,20 @@ chassis_move_t chassis_move;
* @retval none
*/
/**
- * @brief CHASSIS_CONTROL_TIME_MS 2ms
- * @param[in] pvParameters:
+ * @brief ��������� CHASSIS_CONTROL_TIME_MS 2ms
+ * @param[in] pvParameters: ��
* @retval none
*/
void chassis_task(void const *pvParameters)
{
//wait a time
- //һʱ
+ //����һ��ʱ��
vTaskDelay(CHASSIS_TASK_INIT_TIME);
//chassis init
- //̳ʼ
+ //���̳�ʼ��
chassis_init(&chassis_move);
//make sure all chassis motor is online,
- //жϵ̵Ƿ
+ //�жϵ��̵���Ƿ�����
while (toe_is_error(CHASSIS_MOTOR1_TOE) || toe_is_error(CHASSIS_MOTOR2_TOE) || toe_is_error(CHASSIS_MOTOR3_TOE) || toe_is_error(CHASSIS_MOTOR4_TOE) || toe_is_error(DBUS_TOE))
{
vTaskDelay(CHASSIS_CONTROL_TIME_MS);
@@ -151,27 +151,27 @@ void chassis_task(void const *pvParameters)
while (1)
{
//set chassis control mode
- //õ̿ģʽ
+ //���õ��̿���ģʽ
chassis_set_mode(&chassis_move);
//when mode changes, some data save
- //ģʽлݱ
+ //ģʽ�л����ݱ���
chassis_mode_change_control_transit(&chassis_move);
//chassis data update
- //ݸ
+ //�������ݸ���
chassis_feedback_update(&chassis_move);
//set chassis control set-point
- //̿
+ //���̿���������
chassis_set_contorl(&chassis_move);
//chassis control pid calculate
- //̿PID
+ //���̿���PID����
chassis_control_loop(&chassis_move);
//make sure one motor is online at least, so that the control CAN message can be received
- //ȷһߣ CANưԱյ
+ //ȷ������һ��������ߣ� ����CAN���ư����Ա����յ�
if (!(toe_is_error(CHASSIS_MOTOR1_TOE) && toe_is_error(CHASSIS_MOTOR2_TOE) && toe_is_error(CHASSIS_MOTOR3_TOE) && toe_is_error(CHASSIS_MOTOR4_TOE)))
{
//when remote control is offline, chassis motor should receive zero current.
- //ңߵʱ̵.
+ //��ң�������ߵ�ʱ�������̵�������.
if (toe_is_error(DBUS_TOE))
{
CAN_cmd_chassis(0, 0, 0, 0);
@@ -179,13 +179,13 @@ void chassis_task(void const *pvParameters)
else
{
//send control current
- //ͿƵ
+ //���Ϳ��Ƶ���
CAN_cmd_chassis(chassis_move.motor_chassis[0].give_current, chassis_move.motor_chassis[1].give_current,
chassis_move.motor_chassis[2].give_current, chassis_move.motor_chassis[3].give_current);
}
}
//os delay
- //ϵͳʱ
+ //ϵͳ��ʱ
vTaskDelay(CHASSIS_CONTROL_TIME_MS);
#if INCLUDE_uxTaskGetStackHighWaterMark
@@ -201,8 +201,8 @@ void chassis_task(void const *pvParameters)
* @retval none
*/
/**
- * @brief ʼ"chassis_move"pidʼ ңָʼ3508̵ָʼ̨ʼǽǶָʼ
- * @param[out] chassis_move_init:"chassis_move"ָ.
+ * @brief ��ʼ��"chassis_move"����������pid��ʼ���� ң����ָ���ʼ����3508���̵��ָ���ʼ������̨�����ʼ���������ǽǶ�ָ���ʼ��
+ * @param[out] chassis_move_init:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_init(chassis_move_t *chassis_move_init)
@@ -213,49 +213,49 @@ static void chassis_init(chassis_move_t *chassis_move_init)
}
//chassis motor speed PID
- //ٶȻpidֵ
+ //�����ٶȻ�pidֵ
const static fp32 motor_speed_pid[3] = {M3505_MOTOR_SPEED_PID_KP, M3505_MOTOR_SPEED_PID_KI, M3505_MOTOR_SPEED_PID_KD};
//chassis angle PID
- //̽Ƕpidֵ
+ //���̽Ƕ�pidֵ
const static fp32 chassis_yaw_pid[3] = {CHASSIS_FOLLOW_GIMBAL_PID_KP, CHASSIS_FOLLOW_GIMBAL_PID_KI, CHASSIS_FOLLOW_GIMBAL_PID_KD};
const static fp32 chassis_x_order_filter[1] = {CHASSIS_ACCEL_X_NUM};
const static fp32 chassis_y_order_filter[1] = {CHASSIS_ACCEL_Y_NUM};
uint8_t i;
- //in beginning chassis mode is raw
- //̿״̬Ϊԭʼ
+ //in beginning�� chassis mode is raw
+ //���̿���״̬Ϊԭʼ
chassis_move_init->chassis_mode = CHASSIS_VECTOR_RAW;
//get remote control point
- //ȡңָ
+ //��ȡң����ָ��
chassis_move_init->chassis_RC = get_remote_control_point();
//get gyro sensor euler angle point
- //ȡָ̬
+ //��ȡ��������̬��ָ��
chassis_move_init->chassis_INS_angle = get_INS_angle_point();
//get gimbal motor data point
- //ȡָ̨
+ //��ȡ��̨�������ָ��
chassis_move_init->chassis_yaw_motor = get_yaw_motor_point();
chassis_move_init->chassis_pitch_motor = get_pitch_motor_point();
//get chassis motor data point, initialize motor speed PID
- //ȡ̵ָ룬ʼPID
+ //��ȡ���̵������ָ�룬��ʼ��PID
for (i = 0; i < 4; i++)
{
chassis_move_init->motor_chassis[i].chassis_motor_measure = get_chassis_motor_measure_point(i);
PID_init(&chassis_move_init->motor_speed_pid[i], PID_POSITION, motor_speed_pid, M3505_MOTOR_SPEED_PID_MAX_OUT, M3505_MOTOR_SPEED_PID_MAX_IOUT);
}
//initialize angle PID
- //ʼǶPID
+ //��ʼ���Ƕ�PID
PID_init(&chassis_move_init->chassis_angle_pid, PID_POSITION, chassis_yaw_pid, CHASSIS_FOLLOW_GIMBAL_PID_MAX_OUT, CHASSIS_FOLLOW_GIMBAL_PID_MAX_IOUT);
//first order low-pass filter replace ramp function
- //һ˲б
+ //��һ���˲�����б����������
first_order_filter_init(&chassis_move_init->chassis_cmd_slow_set_vx, CHASSIS_CONTROL_TIME, chassis_x_order_filter);
first_order_filter_init(&chassis_move_init->chassis_cmd_slow_set_vy, CHASSIS_CONTROL_TIME, chassis_y_order_filter);
//max and min speed
- // Сٶ
+ //��� ��С�ٶ�
chassis_move_init->vx_max_speed = NORMAL_MAX_CHASSIS_SPEED_X;
chassis_move_init->vx_min_speed = -NORMAL_MAX_CHASSIS_SPEED_X;
@@ -263,7 +263,7 @@ static void chassis_init(chassis_move_t *chassis_move_init)
chassis_move_init->vy_min_speed = -NORMAL_MAX_CHASSIS_SPEED_Y;
//update data
- //һ
+ //����һ������
chassis_feedback_update(chassis_move_init);
}
@@ -273,8 +273,8 @@ static void chassis_init(chassis_move_t *chassis_move_init)
* @retval none
*/
/**
- * @brief õ̿ģʽҪ'chassis_behaviour_mode_set'иı
- * @param[out] chassis_move_mode:"chassis_move"ָ.
+ * @brief ���õ��̿���ģʽ����Ҫ��'chassis_behaviour_mode_set'�����иı�
+ * @param[out] chassis_move_mode:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_set_mode(chassis_move_t *chassis_move_mode)
@@ -293,8 +293,8 @@ static void chassis_set_mode(chassis_move_t *chassis_move_mode)
* @retval none
*/
/**
- * @brief ģʽı䣬ЩҪı䣬̿yawǶ趨ֵӦñɵǰyawǶ
- * @param[out] chassis_move_transit:"chassis_move"ָ.
+ * @brief ����ģʽ�ı䣬��Щ������Ҫ�ı䣬������̿���yaw�Ƕ��趨ֵӦ�ñ�ɵ�ǰ����yaw�Ƕ�
+ * @param[out] chassis_move_transit:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_mode_change_control_transit(chassis_move_t *chassis_move_transit)
@@ -310,19 +310,19 @@ static void chassis_mode_change_control_transit(chassis_move_t *chassis_move_tra
}
//change to follow gimbal angle mode
- //̨ģʽ
+ //���������̨ģʽ
if ((chassis_move_transit->last_chassis_mode != CHASSIS_VECTOR_FOLLOW_GIMBAL_YAW) && chassis_move_transit->chassis_mode == CHASSIS_VECTOR_FOLLOW_GIMBAL_YAW)
{
chassis_move_transit->chassis_relative_angle_set = 0.0f;
}
//change to follow chassis yaw angle
- //̽Ƕģʽ
+ //���������̽Ƕ�ģʽ
else if ((chassis_move_transit->last_chassis_mode != CHASSIS_VECTOR_FOLLOW_CHASSIS_YAW) && chassis_move_transit->chassis_mode == CHASSIS_VECTOR_FOLLOW_CHASSIS_YAW)
{
chassis_move_transit->chassis_yaw_set = chassis_move_transit->chassis_yaw;
}
//change to no follow angle
- //벻̨ģʽ
+ //���벻������̨ģʽ
else if ((chassis_move_transit->last_chassis_mode != CHASSIS_VECTOR_NO_FOLLOW_YAW) && chassis_move_transit->chassis_mode == CHASSIS_VECTOR_NO_FOLLOW_YAW)
{
chassis_move_transit->chassis_yaw_set = chassis_move_transit->chassis_yaw;
@@ -332,13 +332,13 @@ static void chassis_mode_change_control_transit(chassis_move_t *chassis_move_tra
}
/**
- * @brief chassis some measure data updata, such as motor speed, euler angle robot speed
+ * @brief chassis some measure data updata, such as motor speed, euler angle�� robot speed
* @param[out] chassis_move_update: "chassis_move" valiable point
* @retval none
*/
/**
- * @brief ̲ݸ£ٶȣŷǶȣٶ
- * @param[out] chassis_move_update:"chassis_move"ָ.
+ * @brief ���̲������ݸ��£���������ٶȣ�ŷ���Ƕȣ��������ٶ�
+ * @param[out] chassis_move_update:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_feedback_update(chassis_move_t *chassis_move_update)
@@ -352,19 +352,19 @@ static void chassis_feedback_update(chassis_move_t *chassis_move_update)
for (i = 0; i < 4; i++)
{
//update motor speed, accel is differential of speed PID
- //µٶȣٶٶȵPID
+ //���µ���ٶȣ����ٶ����ٶȵ�PID��
chassis_move_update->motor_chassis[i].speed = CHASSIS_MOTOR_RPM_TO_VECTOR_SEN * chassis_move_update->motor_chassis[i].chassis_motor_measure->speed_rpm;
chassis_move_update->motor_chassis[i].accel = chassis_move_update->motor_speed_pid[i].Dbuf[0] * CHASSIS_CONTROL_FREQUENCE;
}
//calculate vertical speed, horizontal speed ,rotation speed, left hand rule
- //µٶ x ƽٶyתٶwzϵΪϵ
+ //���µ��������ٶ� x�� ƽ���ٶ�y����ת�ٶ�wz������ϵΪ����ϵ
chassis_move_update->vx = (-chassis_move_update->motor_chassis[0].speed + chassis_move_update->motor_chassis[1].speed + chassis_move_update->motor_chassis[2].speed - chassis_move_update->motor_chassis[3].speed) * MOTOR_SPEED_TO_CHASSIS_SPEED_VX;
chassis_move_update->vy = (-chassis_move_update->motor_chassis[0].speed - chassis_move_update->motor_chassis[1].speed + chassis_move_update->motor_chassis[2].speed + chassis_move_update->motor_chassis[3].speed) * MOTOR_SPEED_TO_CHASSIS_SPEED_VY;
chassis_move_update->wz = (-chassis_move_update->motor_chassis[0].speed - chassis_move_update->motor_chassis[1].speed - chassis_move_update->motor_chassis[2].speed - chassis_move_update->motor_chassis[3].speed) * MOTOR_SPEED_TO_CHASSIS_SPEED_WZ / MOTOR_DISTANCE_TO_CENTER;
//calculate chassis euler angle, if chassis add a new gyro sensor,please change this code
- //̬Ƕ, ⲿִ
+ //���������̬�Ƕ�, �����������������������ⲿ�ִ���
chassis_move_update->chassis_yaw = rad_format(*(chassis_move_update->chassis_INS_angle + INS_YAW_ADDRESS_OFFSET) - chassis_move_update->chassis_yaw_motor->relative_angle);
chassis_move_update->chassis_pitch = rad_format(*(chassis_move_update->chassis_INS_angle + INS_PITCH_ADDRESS_OFFSET) - chassis_move_update->chassis_pitch_motor->relative_angle);
chassis_move_update->chassis_roll = *(chassis_move_update->chassis_INS_angle + INS_ROLL_ADDRESS_OFFSET);
@@ -378,11 +378,11 @@ static void chassis_feedback_update(chassis_move_t *chassis_move_update)
* @retval none
*/
/**
- * @brief ңֵͨͺٶ
+ * @brief ����ң����ͨ��ֵ����������ͺ����ٶ�
*
- * @param[out] vx_set: ٶָ
- * @param[out] vy_set: ٶָ
- * @param[out] chassis_move_rc_to_vector: "chassis_move" ָ
+ * @param[out] vx_set: �����ٶ�ָ��
+ * @param[out] vy_set: �����ٶ�ָ��
+ * @param[out] chassis_move_rc_to_vector: "chassis_move" ����ָ��
* @retval none
*/
void chassis_rc_to_control_vector(fp32 *vx_set, fp32 *vy_set, chassis_move_t *chassis_move_rc_to_vector)
@@ -395,7 +395,7 @@ void chassis_rc_to_control_vector(fp32 *vx_set, fp32 *vy_set, chassis_move_t *ch
int16_t vx_channel, vy_channel;
fp32 vx_set_channel, vy_set_channel;
//deadline, because some remote control need be calibrated, the value of rocker is not zero in middle place,
- //ƣΪңܴڲ ҡм䣬ֵΪ0
+ //�������ƣ���Ϊң�������ܴ��ڲ��� ҡ�����м䣬��ֵ��Ϊ0
rc_deadband_limit(chassis_move_rc_to_vector->chassis_RC->rc.ch[CHASSIS_X_CHANNEL], vx_channel, CHASSIS_RC_DEADLINE);
rc_deadband_limit(chassis_move_rc_to_vector->chassis_RC->rc.ch[CHASSIS_Y_CHANNEL], vy_channel, CHASSIS_RC_DEADLINE);
@@ -403,7 +403,7 @@ void chassis_rc_to_control_vector(fp32 *vx_set, fp32 *vy_set, chassis_move_t *ch
vy_set_channel = vy_channel * -CHASSIS_VY_RC_SEN;
//keyboard set speed set-point
- //̿
+ //���̿���
if (chassis_move_rc_to_vector->chassis_RC->key.v & CHASSIS_FRONT_KEY)
{
vx_set_channel = chassis_move_rc_to_vector->vx_max_speed;
@@ -423,11 +423,11 @@ void chassis_rc_to_control_vector(fp32 *vx_set, fp32 *vy_set, chassis_move_t *ch
}
//first order low-pass replace ramp function, calculate chassis speed set-point to improve control performance
- //һͨ˲бΪٶ
+ //һ��ͨ�˲�����б����Ϊ�����ٶ�����
first_order_filter_cali(&chassis_move_rc_to_vector->chassis_cmd_slow_set_vx, vx_set_channel);
first_order_filter_cali(&chassis_move_rc_to_vector->chassis_cmd_slow_set_vy, vy_set_channel);
//stop command, need not slow change, set zero derectly
- //ֹͣźţҪ٣ֱӼٵ
+ //ֹͣ�źţ�����Ҫ�������٣�ֱ�Ӽ��ٵ���
if (vx_set_channel < CHASSIS_RC_DEADLINE * CHASSIS_VX_RC_SEN && vx_set_channel > -CHASSIS_RC_DEADLINE * CHASSIS_VX_RC_SEN)
{
chassis_move_rc_to_vector->chassis_cmd_slow_set_vx.out = 0.0f;
@@ -447,8 +447,8 @@ void chassis_rc_to_control_vector(fp32 *vx_set, fp32 *vy_set, chassis_move_t *ch
* @retval none
*/
/**
- * @brief õֵ̿, ˶ֵͨchassis_behaviour_control_setõ
- * @param[out] chassis_move_update:"chassis_move"ָ.
+ * @brief ���õ��̿�������ֵ, ���˶�����ֵ��ͨ��chassis_behaviour_control_set�������õ�
+ * @param[out] chassis_move_update:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_set_contorl(chassis_move_t *chassis_move_control)
@@ -461,28 +461,28 @@ static void chassis_set_contorl(chassis_move_t *chassis_move_control)
fp32 vx_set = 0.0f, vy_set = 0.0f, angle_set = 0.0f;
- //get three control set-point, ȡֵ
+ //get three control set-point, ��ȡ������������ֵ
chassis_behaviour_control_set(&vx_set, &vy_set, &angle_set, chassis_move_control);
//follow gimbal mode
- //̨ģʽ
+ //������̨ģʽ
if (chassis_move_control->chassis_mode == CHASSIS_VECTOR_FOLLOW_GIMBAL_YAW)
{
fp32 sin_yaw = 0.0f, cos_yaw = 0.0f;
//rotate chassis direction, make sure vertial direction follow gimbal
- //תƵٶȷ֤ǰ̨˶ƽ
+ //��ת���Ƶ����ٶȷ���֤ǰ����������̨�����������˶�ƽ��
sin_yaw = arm_sin_f32(-chassis_move_control->chassis_yaw_motor->relative_angle);
cos_yaw = arm_cos_f32(-chassis_move_control->chassis_yaw_motor->relative_angle);
chassis_move_control->vx_set = cos_yaw * vx_set + sin_yaw * vy_set;
chassis_move_control->vy_set = -sin_yaw * vx_set + cos_yaw * vy_set;
//set control relative angle set-point
- //ÿ̨Ƕ
+ //���ÿ��������̨�Ƕ�
chassis_move_control->chassis_relative_angle_set = rad_format(angle_set);
//calculate ratation speed
- //תPIDٶ
+ //������תPID���ٶ�
chassis_move_control->wz_set = -PID_calc(&chassis_move_control->chassis_angle_pid, chassis_move_control->chassis_yaw_motor->relative_angle, chassis_move_control->chassis_relative_angle_set);
//speed limit
- //ٶ
+ //�ٶ���
chassis_move_control->vx_set = fp32_constrain(chassis_move_control->vx_set, chassis_move_control->vx_min_speed, chassis_move_control->vx_max_speed);
chassis_move_control->vy_set = fp32_constrain(chassis_move_control->vy_set, chassis_move_control->vy_min_speed, chassis_move_control->vy_max_speed);
}
@@ -490,21 +490,21 @@ static void chassis_set_contorl(chassis_move_t *chassis_move_control)
{
fp32 delat_angle = 0.0f;
//set chassis yaw angle set-point
- //õ̿ƵĽǶ
+ //���õ��̿��ƵĽǶ�
chassis_move_control->chassis_yaw_set = rad_format(angle_set);
delat_angle = rad_format(chassis_move_control->chassis_yaw_set - chassis_move_control->chassis_yaw);
//calculate rotation speed
- //תĽٶ
+ //������ת�Ľ��ٶ�
chassis_move_control->wz_set = PID_calc(&chassis_move_control->chassis_angle_pid, 0.0f, delat_angle);
//speed limit
- //ٶ
+ //�ٶ���
chassis_move_control->vx_set = fp32_constrain(vx_set, chassis_move_control->vx_min_speed, chassis_move_control->vx_max_speed);
chassis_move_control->vy_set = fp32_constrain(vy_set, chassis_move_control->vy_min_speed, chassis_move_control->vy_max_speed);
}
else if (chassis_move_control->chassis_mode == CHASSIS_VECTOR_NO_FOLLOW_YAW)
{
//"angle_set" is rotation speed set-point
- //angle_set תٶȿ
+ //��angle_set�� ����ת�ٶȿ���
chassis_move_control->wz_set = angle_set;
chassis_move_control->vx_set = fp32_constrain(vx_set, chassis_move_control->vx_min_speed, chassis_move_control->vx_max_speed);
chassis_move_control->vy_set = fp32_constrain(vy_set, chassis_move_control->vy_min_speed, chassis_move_control->vy_max_speed);
@@ -512,7 +512,7 @@ static void chassis_set_contorl(chassis_move_t *chassis_move_control)
else if (chassis_move_control->chassis_mode == CHASSIS_VECTOR_RAW)
{
//in raw mode, set-point is sent to CAN bus
- //ԭʼģʽֵǷ͵CAN
+ //��ԭʼģʽ������ֵ�Ƿ��͵�CAN����
chassis_move_control->vx_set = vx_set;
chassis_move_control->vy_set = vy_set;
chassis_move_control->wz_set = angle_set;
@@ -530,17 +530,17 @@ static void chassis_set_contorl(chassis_move_t *chassis_move_control)
* @retval none
*/
/**
- * @brief ĸٶͨ
- * @param[in] vx_set: ٶ
- * @param[in] vy_set: ٶ
- * @param[in] wz_set: תٶ
- * @param[out] wheel_speed: ĸٶ
+ * @brief �ĸ������ٶ���ͨ�������������������
+ * @param[in] vx_set: �����ٶ�
+ * @param[in] vy_set: �����ٶ�
+ * @param[in] wz_set: ��ת�ٶ�
+ * @param[out] wheel_speed: �ĸ������ٶ�
* @retval none
*/
static void chassis_vector_to_mecanum_wheel_speed(const fp32 vx_set, const fp32 vy_set, const fp32 wz_set, fp32 wheel_speed[4])
{
//because the gimbal is in front of chassis, when chassis rotates, wheel 0 and wheel 1 should be slower and wheel 2 and wheel 3 should be faster
- //תʱ ̨ǰǰ 0 1 תٶȱ 2,3 תٶȱ
+ //��ת��ʱ�� ������̨��ǰ��������ǰ������ 0 ��1 ��ת���ٶȱ����� �������� 2,3 ��ת���ٶȱ��
wheel_speed[0] = -vx_set - vy_set + (CHASSIS_WZ_SET_SCALE - 1.0f) * MOTOR_DISTANCE_TO_CENTER * wz_set;
wheel_speed[1] = vx_set - vy_set + (CHASSIS_WZ_SET_SCALE - 1.0f) * MOTOR_DISTANCE_TO_CENTER * wz_set;
wheel_speed[2] = vx_set + vy_set + (-CHASSIS_WZ_SET_SCALE - 1.0f) * MOTOR_DISTANCE_TO_CENTER * wz_set;
@@ -555,8 +555,8 @@ static void chassis_vector_to_mecanum_wheel_speed(const fp32 vx_set, const fp32
* @retval none
*/
/**
- * @brief ѭݿ趨ֵֵп
- * @param[out] chassis_move_control_loop:"chassis_move"ָ.
+ * @brief ����ѭ�������ݿ����趨ֵ������������ֵ�����п���
+ * @param[out] chassis_move_control_loop:"chassis_move"����ָ��.
* @retval none
*/
static void chassis_control_loop(chassis_move_t *chassis_move_control_loop)
@@ -567,7 +567,7 @@ static void chassis_control_loop(chassis_move_t *chassis_move_control_loop)
uint8_t i = 0;
//mecanum wheel speed calculation
- //˶ֽ
+ //�����˶��ֽ�
chassis_vector_to_mecanum_wheel_speed(chassis_move_control_loop->vx_set,
chassis_move_control_loop->vy_set, chassis_move_control_loop->wz_set, wheel_speed);
@@ -579,12 +579,12 @@ static void chassis_control_loop(chassis_move_t *chassis_move_control_loop)
chassis_move_control_loop->motor_chassis[i].give_current = (int16_t)(wheel_speed[i]);
}
//in raw mode, derectly return
- //rawֱӷ
+ //raw����ֱ�ӷ���
return;
}
//calculate the max speed in four wheels, limit the max speed
- //ӿٶȣٶ
+ //�������ӿ�������ٶȣ�������������ٶ�
for (i = 0; i < 4; i++)
{
chassis_move_control_loop->motor_chassis[i].speed_set = wheel_speed[i];
@@ -605,18 +605,18 @@ static void chassis_control_loop(chassis_move_t *chassis_move_control_loop)
}
//calculate pid
- //pid
+ //����pid
for (i = 0; i < 4; i++)
{
PID_calc(&chassis_move_control_loop->motor_speed_pid[i], chassis_move_control_loop->motor_chassis[i].speed, chassis_move_control_loop->motor_chassis[i].speed_set);
}
- //ʿ
+ //���ʿ���
chassis_power_control(chassis_move_control_loop);
- //ֵֵ
+ //��ֵ����ֵ
for (i = 0; i < 4; i++)
{
chassis_move_control_loop->motor_chassis[i].give_current = (int16_t)(chassis_move_control_loop->motor_speed_pid[i].out);
diff --git a/InfantryTest/official_delete/chassis_task.h b/InfantryTest/official_delete/chassis_task.h
index 9eb58d641c664d55f306e0f1484e84f39c34dd25..a50fcd66b0ab1ea036abf6129cce57c48141e6fb 100644
--- a/InfantryTest/official_delete/chassis_task.h
+++ b/InfantryTest/official_delete/chassis_task.h
@@ -118,7 +118,7 @@
//chassis motor speed PID
//底盘电机速度环PID
-#define M3505_MOTOR_SPEED_PID_KP 15000.0f
+#define M3505_MOTOR_SPEED_PID_KP 15000.0f
#define M3505_MOTOR_SPEED_PID_KI 10.0f
#define M3505_MOTOR_SPEED_PID_KD 0.0f
#define M3505_MOTOR_SPEED_PID_MAX_OUT MAX_MOTOR_CAN_CURRENT
diff --git a/Sentry/Chassis/SAS_Code/CAN_receive.c b/Sentry/Chassis/SAS_Code/CAN_receive.c
index 3404793e8afe2507c939a8b8f7ac7bd650daa1c0..d0444d9137385b1304a5d65697f585a9b71cedef 100644
--- a/Sentry/Chassis/SAS_Code/CAN_receive.c
+++ b/Sentry/Chassis/SAS_Code/CAN_receive.c
@@ -44,12 +44,12 @@ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
uint8_t rx_data[8];
HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &rx_header, rx_data);
- if(hcan=&CHASSIS_UPGIMBAL_CAN)
+ if(hcan==&CHASSIS_UPGIMBAL_CAN)
{
switch (rx_header.StdId)
{
-
+ #ifdef GM6020_CURRENTMODE
case CAN_CHASSIS_LF_G:
case CAN_CHASSIS_RF_G:
case CAN_CHASSIS_RB_G:
@@ -63,6 +63,7 @@ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
detect_hook(i+CHASSIS_LF_M_TOE);
break;
}
+ #endif
case CAN_FROM_GIMBAL_XYW:
{
@@ -74,21 +75,31 @@ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
}
break;
- case CAN_FROM_GIMBAL_MODE:
- {
- gimbalSTM.yawDownEcd=(int16_t)(rx_data[2]<<8|rx_data[3]);
- detect_hook(GIMBALSTM32_TOE);
- }
-
default:
{
break;
}
}
- }else if(hcan=&CHASSIS_CAN)
+ }else if(hcan==&CHASSIS_CAN)
{
switch (rx_header.StdId)
- {
+ {
+ #ifdef GM6020_VOLTMODE
+ case CAN_CHASSIS_LF_G:
+ case CAN_CHASSIS_RF_G:
+ case CAN_CHASSIS_RB_G:
+ case CAN_CHASSIS_LB_G:
+ {
+ static uint8_t i = 0;
+ //get motor id
+ //根据我们实际使用的修改
+ i = rx_header.StdId - CAN_CHASSIS_LF_M+CHASSIS_LF_M;
+ get_motor_measure(&motor_chassis[i], rx_data);
+ detect_hook(i+CHASSIS_LF_M_TOE);
+ break;
+ }
+ #endif
+
case CAN_CHASSIS_LF_M:
case CAN_CHASSIS_RF_M:
case CAN_CHASSIS_RB_M:
@@ -145,6 +156,7 @@ void CAN_cmd_chassis_M3508(int16_t motor1, int16_t motor2, int16_t motor3, int16
* @param[in] motor4: (7) 6020电机控制电压, 范围 [-30000,30000]
* @retval none
*/
+
void CAN_cmd_chassis_GM6020(int16_t motor1, int16_t motor2, int16_t motor3, int16_t motor4)
{
uint32_t send_mail_box;
@@ -161,9 +173,13 @@ void CAN_cmd_chassis_GM6020(int16_t motor1, int16_t motor2, int16_t motor3, int1
chassis_can_send_data[6] = motor4 >> 8;
chassis_can_send_data[7] = motor4;
+ #ifdef GM6020_CURRENTMODE
HAL_CAN_AddTxMessage(&CHASSIS_UPGIMBAL_CAN, &chassis_tx_message, chassis_can_send_data, &send_mail_box);
+ #endif
+ #ifdef GM6020_VOLTMODE
+ HAL_CAN_AddTxMessage(&CHASSIS_CAN, &chassis_tx_message, chassis_can_send_data, &send_mail_box);
+ #endif
}
-
/**
* @brief 发送两个底盘电机控制电流[8,9]
* @param[in] motor1: (8) 6020电机控制电压, 范围 [-30000,30000]
diff --git a/Sentry/Chassis/SAS_Code/CAN_receive.h b/Sentry/Chassis/SAS_Code/CAN_receive.h
index 95ec9ed029bfcb8b1d1b9130f01a86e80a905f40..057bbe075e750cc73a96e15d0d28bd7ab69272fd 100644
--- a/Sentry/Chassis/SAS_Code/CAN_receive.h
+++ b/Sentry/Chassis/SAS_Code/CAN_receive.h
@@ -1,5 +1,6 @@
#ifndef CAN_MOTOR_H
#define CAN_MOTOR_H
+#define GM6020_VOLTMODE
#include "struct_typedef.h"
#define CHASSIS_UPGIMBAL_CAN hcan1
@@ -10,10 +11,10 @@
// #define GIMBAL_CAN hcan1
//电机的类型和约定的id枚举类型。通过修改这里的值对应更改电机
+#ifdef GM6020_CURRENTMODE
typedef enum
{
CAN_FROM_GIMBAL_XYW=0x2FE,
- CAN_FROM_GIMBAL_MODE=0x1FF,
CAN_CHASSIS_M_CAN2_ID = 0x200, //表示底盘上M3508在CAN2上的标识符
CAN_CHASSIS_LF_M = 0x201,
@@ -47,7 +48,46 @@ typedef enum
CAN_SHOOT_UP_TRIGGER = 0x204,
} can_msg_id_e;
+#endif
+#ifdef GM6020_VOLTMODE
+typedef enum
+{
+ CAN_FROM_GIMBAL_XYW=0x2FF,
+
+ CAN_CHASSIS_M_CAN2_ID = 0x200, //表示底盘上M3508在CAN2上的标识符
+ CAN_CHASSIS_LF_M = 0x201,
+ CAN_CHASSIS_RF_M = 0x202,
+ CAN_CHASSIS_RB_M = 0x203,
+ CAN_CHASSIS_LB_M = 0x204,
+
+ CAN_CHASSIS_G_CAN1_ID = 0x1FF, //底盘GM6020
+ CAN_CHASSIS_LF_G = 0x205,
+ CAN_CHASSIS_RF_G = 0x206,
+ CAN_CHASSIS_RB_G = 0x207,
+ CAN_CHASSIS_LB_G = 0x208,
+
+ CAN_DOWN_M_CAN2_ID = 0x1FF, //下云台
+ CAN_DOWN_G_CAN2_ID = 0x2FF,
+ CAN_DOWN_M_CAN1_ID = 0x1FF, //拨弹
+ CAN_DOWN_G_CAN1_ID = 0x2FF, //yawdown
+ CAN_YAW_UP = 0x209,
+ CAN_PITCH_DOWN = 0x20A,
+ CAN_SHOOT_DOWN_L = 0x205,
+ CAN_SHOOT_DOWN_R = 0x206,
+ CAN_SHOOT_DOWN_TRIGGER_1 = 0x207,
+ CAN_SHOOT_DOWN_TRIGGER_2 = 0x208,
+ CAN_SHOOT_DOWN_YAW_DOWN = 0x209,
+
+ CAN_UP_M_CAN1_ID = 0x200, //上云台
+ CAN_UP_G_CAN1_ID = 0x2FF,
+ CAN_PITCH_UP = 0x209,
+ CAN_SHOOT_UP_L = 0x202,
+ CAN_SHOOT_UP_R = 0x203,
+ CAN_SHOOT_UP_TRIGGER = 0x204,
+
+} can_msg_id_e;
+#endif
//电机的虚拟ID枚举,根据情况注释[节约内存]
typedef enum
{
diff --git a/Sentry/Gimbal/SAS_Code/CAN_receive.c b/Sentry/Gimbal/SAS_Code/CAN_receive.c
index d9fbd09396482dcf4a81acc15839e2152b3eb20c..3dc701e0d06e8e9472fd032a58c0cf74b73daa0c 100644
--- a/Sentry/Gimbal/SAS_Code/CAN_receive.c
+++ b/Sentry/Gimbal/SAS_Code/CAN_receive.c
@@ -124,11 +124,10 @@ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
/**
- * @brief 发送到底盘(1,2,3,4)
- * @param[in] :nextmode
- * @param[in] :ecd
- * @param[in] : 3 2006电机控制电流, [-10000,10000]MAX=10A
- * @param[in] : 4 2006电机控制电流, [-10000,10000]MAX=10A
+ * @brief[in] 向底盘发送下云台拨弹信息和yawdownecd
+ * @param[in] motor_gimbal[YAW_DOWN].ecd:yawdownecd
+ * @param[in] shootdownFtrigger: 2006电机控制电流, [-10000,10000]MAX=10A
+ * @param[in] shootdownStrigger: 2006电机控制电流, [-10000,10000]MAX=10A
* @retval none
*/
@@ -140,8 +139,8 @@ void CAN_cmd_downtrigger( int16_t shootdownFtrigger, int16_t shootdownStrigger)
gimbal_tx_message.RTR = CAN_RTR_DATA;
gimbal_tx_message.DLC = 0x08;
- gimbal_can_send_data[0] = motor_gimbal[YAW_DOWN].ecd >> 8;
- gimbal_can_send_data[1] = motor_gimbal[YAW_DOWN].ecd;
+ gimbal_can_send_data[0] = 0;
+ gimbal_can_send_data[1] = 0;
gimbal_can_send_data[2] = 0;
gimbal_can_send_data[3] = 0;
gimbal_can_send_data[4] = shootdownFtrigger >> 8;
@@ -153,7 +152,7 @@ void CAN_cmd_downtrigger( int16_t shootdownFtrigger, int16_t shootdownStrigger)
}
/**
- * @brief 发送下云台电机控制电流(0x209,0x20A)
+ * @brief 发送下云台电机控制电压(0x209,0x20A)
* @param[in] yawup: (0x209) 6020电机控制电压, 范围 [-30000,30000]
* @param[in] pitchdown: (0x20A) 6020电机控制电压, 范围 [-30000,30000]
* @retval none
@@ -232,7 +231,8 @@ void CAN_cmd_upshoot(int16_t shootupL, int16_t shootupR, int16_t shootuptriggger
}
/**
- * @brief 发送上云台电机控制电流(0x209)
+ * @brief 向底盘发送信息
+ * @param[in] yawDown: (0x)
* @param[in] pitchup: (0x209) 6020电机控制电压, 范围 [-30000,30000]
* @retval none
*/
@@ -245,6 +245,7 @@ void CAN_cmd_upshoot(int16_t shootupL, int16_t shootupR, int16_t shootuptriggger
/**
* @brief 发送上云台pitch和下云台yaw以及给底盘C板的值
+ * @brief 发送到底盘(1,2,3,4)
* @param[in] shootuptrigger: (0x204) 2006电机控制电流, 范围 [-10000,10000]MAX=10A
* @retval none
*/
diff --git a/Sentry/Gimbal/SAS_Code/CAN_receive.h b/Sentry/Gimbal/SAS_Code/CAN_receive.h
index 64ac2a15927b92eef5e82c127e41c33b79fe74eb..0189c7bcb19b825815dbfe1e0646ac6637af4639 100644
--- a/Sentry/Gimbal/SAS_Code/CAN_receive.h
+++ b/Sentry/Gimbal/SAS_Code/CAN_receive.h
@@ -1,5 +1,6 @@
#ifndef CAN_MOTOR_H
#define CAN_MOTOR_H
+#define GM6020_VOLTMODE //gm6020电压模式
#include "struct_typedef.h"
#define DOWN_GIMBAL_CAN hcan2
@@ -14,6 +15,7 @@
// #define GIMBAL_CAN hcan1
//电机的类型和约定的id枚举类型。通过修改这里的值对应更改电机
+#ifdef GM6020_CURRNETMODE
typedef enum
{
@@ -42,13 +44,40 @@ typedef enum
CAN_SHOOT_DOWN_F_TRIGGER=0x207, //通过can1发送
CAN_SHOOT_DOWN_S_TRIGGER=0x208, //通过can1发送
-
+} can_msg_id_e;
+#endif
-
+#ifdef GM6020_VOLTMODE
+typedef enum
+{
+
+ CAN_UP_G_CAN1_ID = 0x2FF, //上云台6020
+ CAN_PITCH_UP = 0x20A,
+
+ CAN_UP_M_CAN1_ID = 0x200, //上云台 3508
+ CAN_SHOOT_UP_L = 0x202,
+ CAN_SHOOT_UP_R = 0x203,
+
+ CAN_UP_OTHER_CAN1_ID=0x200, //上云台2006
+ CAN_SHOOT_UP_TRIGGER = 0x204,
+ CAN_DOWN_G_CAN2_ID = 0x2FF, //下云台6020
+ CAN_YAW_UP = 0x209,
+ CAN_PITCH_DOWN = 0x20A,
+
+ CAN_DOWN_G_CAN1_ID = 0x2FF,
+ CAN_YAW_DOWN = 0x209, //通过can1发送
+
+ CAN_DOWN_M_CAN2_ID = 0x1FF, //下云台3508
+ CAN_SHOOT_DOWN_L = 0x205,
+ CAN_SHOOT_DOWN_R = 0x206,
-
+ CAN_DOWN_OTHER_CAN1_ID=0x1FF, //下云台2006
+ CAN_SHOOT_DOWN_F_TRIGGER=0x207, //通过can1发送
+ CAN_SHOOT_DOWN_S_TRIGGER=0x208, //通过can1发送
+
} can_msg_id_e;
+#endif
//电机的虚拟ID枚举,根据情况注释[节约内存]
typedef enum
@@ -96,7 +125,6 @@ typedef struct
int8_t y; //
int8_t w; //
int8_t nextmode; //下一个模式
- uint16_t yawDownEcd; //下云台yaw轴的ecd
}toDownSTM_t; //fromGimbalSTM_t
void CAN_cmd_GM_and_downSTM(int16_t yawDown,int16_t pitchUp,toDownSTM_t DownSTM);
diff --git a/Sentry/README.md b/Sentry/README.md
index 15e825fc7115b2c9753e94c360038aa419d1aa59..72f18ca48c1df6a5786f57f1e5969f02eb23fba3 100644
--- a/Sentry/README.md
+++ b/Sentry/README.md
@@ -61,6 +61,9 @@ typedef struct
- 分配时考虑电机安装地点,电机自身支持的通信方式
- 要考虑反馈时标识符不冲突(以下标识符为发送标识符)
+
+- GM6020使用电流模式时的ID分配:
+
| 虚拟ID | 型号 | 作用 | 真实ID | can总线/标识符 |
| --------------- | ---- | ----------------------- | ------ | -------------- |
| 上云台 | | | | |
@@ -86,6 +89,33 @@ typedef struct
| 6 | 6020 | 舵轮驱动 | 3 | 1/1FE |
| 7 | 6020 | 舵轮驱动 | 4 | 1/1FE |
+- GM6020使用电压模式时的ID分配:
+
+| 虚拟ID | 型号 | 作用 | 真实ID | can总线/标识符 |
+| --------------- | ---- | ----------------------- | ------ | -------------- |
+| 上云台 | | | | |
+| 0 | 6020 | pitch up | 6 | 1/2FF |
+| 1 | 3508 | 摩擦轮(左) | 2 | 1/200 |
+| 2 | 3508 | 摩擦轮(右) | 3 | 1/200 |
+| 3 | 2006 | 拨弹 | 4 | 1/200 |
+| 下云台 | | | | |
+| 4 | 6020 | yaw up | 5 | 2/2FF |
+| 5 | 6020 | pitch down | 6 | 2/2FF |
+| 6 | 6020 | yaw down(底下云台yaw轴) | 5 | 1/2FF |
+| 7 | 3508 | 摩擦轮(左) | 5 | 2/1FF |
+| 8 | 3508 | 摩擦轮(右) | 6 | 2/1FF |
+| 9 | 2006 | 拨弹 | 7 | 1/1FF |
+| 10 | 2006 | 拨弹 | 8 | 1/1FF |
+| 底盘(第二块C板) | | | | |
+| 0 | 3508 | 底盘驱动左前 | 1 | 2/200 |
+| 1 | 3508 | 底盘驱动右前 | 2 | 2/200 |
+| 2 | 3508 | 底盘驱动右后 | 3 | 2/200 |
+| 3 | 3508 | 底盘驱动左后 | 4 | 2/200 |
+| 4 | 6020 | 舵轮驱动(方向同3508) | 1 | 2/1FF |
+| 5 | 6020 | 舵轮驱动 | 2 | 2/1FF |
+| 6 | 6020 | 舵轮驱动 | 3 | 2/1FF |
+| 7 | 6020 | 舵轮驱动 | 4 | 2/1FF |
+
## 哨兵模式
### 无力模式【mode=0】
diff --git a/lnfantry/SAS_Code/CAN_receive.c b/lnfantry/SAS_Code/CAN_receive.c
index 6649c694d33a77bb37b4f2ac57d56c27011fc756..411f493fa8dbe1238e1b9ff128bd5f31caedccd5 100644
--- a/lnfantry/SAS_Code/CAN_receive.c
+++ b/lnfantry/SAS_Code/CAN_receive.c
@@ -252,3 +252,8 @@ const motor_measure_t *get_shoot_motor_measure_point(uint8_t i)
return &motor_shoot[(i & 0x03)];
}
+void OLED_canreceive(){
+ OLED_printf(0,0,"AAAAAAAAAAAAAAAAAAAAmotor1:%d,motor2:%d,motor3:%d,motor4:%d",(int32_t)motor_chassis[0].speed_rpm,(int32_t)motor_chassis[1].speed_rpm,
+ (int32_t)motor_chassis[2].speed_rpm,(int32_t)motor_chassis[3].speed_rpm);
+}
+
diff --git a/lnfantry/SAS_Code/CAN_receive.h b/lnfantry/SAS_Code/CAN_receive.h
index c982b0da1ec20b9db19cc100418fd7050259ce2c..0bdc43aab31b6cd01c7bbecc13ccce1918c012dd 100644
--- a/lnfantry/SAS_Code/CAN_receive.h
+++ b/lnfantry/SAS_Code/CAN_receive.h
@@ -78,6 +78,8 @@ extern void CAN_cmd_chassis(int16_t motor1, int16_t motor2, int16_t motor3, int1
*/
extern void CAN_cmd_shoot(int16_t motor5, int16_t motor6);
+extern void OLED_canreceive();
+
// 用于给外面的函数提供数据
diff --git a/lnfantry/SAS_Code/naive_chassis_task.c b/lnfantry/SAS_Code/naive_chassis_task.c
index 6a323c430b7a88bebcee03b97b668919427f8770..75532f574019949d89974ed5f1e13e2757867199 100644
--- a/lnfantry/SAS_Code/naive_chassis_task.c
+++ b/lnfantry/SAS_Code/naive_chassis_task.c
@@ -101,13 +101,10 @@
// #define CHASSIS_VY_RC_SEN -0.0005f //是负数,遥控器向左拉,向左平移,遥控器摇杆读数为负,在坐标系中为向y正方向
// #define CHASSIS_WZ_RC_SEN -0.0005f //最大旋转线速度。0.33m/s //是负数。遥控器右拉,向右转
-#define CHASSIS_VX_RC_SEN -0.0025f //把遥控器摇杆读数转化为速度的系数。遥控器-660~+660.可得最大0.33m/s
-#define CHASSIS_VY_RC_SEN -0.0025f //是负数,遥控器向左拉,向左平移,遥控器摇杆读数为负,在坐标系中为向y正方向
-#define CHASSIS_WZ_RC_SEN -0.0025f //最大旋转线速度。0.33m/s //是负数。遥控器右拉,向右转
+#define CHASSIS_VX_RC_SEN 0.001f //把遥控器摇杆读数转化为速度的系数。遥控器-660~+660.可得最大0.33m/s
+#define CHASSIS_VY_RC_SEN -0.001f //是负数,遥控器向左拉,向左平移,遥控器摇杆读数为负,在坐标系中为向y正方向
+#define CHASSIS_WZ_RC_SEN -0.001f //最大旋转线速度。0.33m/s //是负数。遥控器右拉,向右转
-#define CHASSIS_VX_RC_SEN 0.000025f //把遥控器摇杆读数转化为速度的系数。遥控器-660~+660.可得最大0.33m/s
-#define CHASSIS_VY_RC_SEN -0.000025f //是负数,遥控器向左拉,向左平移,遥控器摇杆读数为负,在坐标系中为向y正方向
-#define CHASSIS_WZ_RC_SEN -0.000025f //最大旋转线速度。0.33m/s //是负数。遥控器右拉,向右转
#define CHASSIS_RC_DEADLINE 10 //低于这个值的摇杆读数一律为0
@@ -129,7 +126,7 @@
//***************************PID控制参数*****************//
#define MAX_MOTOR_CAN_CURRENT 15000.0f //底盘3508最大can发送电流值
//底盘电机速度环PID
-#define M3505_MOTOR_SPEED_PID_KP 16000.0f
+#define M3505_MOTOR_SPEED_PID_KP 10000.0f
#define M3505_MOTOR_SPEED_PID_KI 0.0f
#define M3505_MOTOR_SPEED_PID_KD 0.0f
#define M3505_MOTOR_SPEED_PID_MAX_OUT MAX_MOTOR_CAN_CURRENT
@@ -595,7 +592,17 @@ void chassis_task(void const *pvParameters)
}
}
-void OLED_chassis(void)
+void OLED_chassis_yaw_ecd(void)
{
- OLED_printf(4,4,"YAW_ECD:%d",get_yaw_gimbal_motor_measure_point()->ecd);
+ OLED_printf(0,0,"YAW_ECD:%d",get_yaw_gimbal_motor_measure_point()->ecd);
}
+
+void OLED_chassis_speed(void)
+{
+ OLED_printf(0,0,"W0:%d W1:%d W2:%d W3:%d",(int32_t)driveMotor[0].wantedMotorSpeed,(int32_t)driveMotor[1].wantedMotorSpeed,(int32_t)driveMotor[2].wantedMotorSpeed,(int32_t)driveMotor[3].wantedMotorSpeed);
+}
+
+void OLED_chassis_current(void){
+ OLED_printf(0,0,"current:m1:%d,m2:%d,m3:%d,m4:%d",(int32_t)driveMotor[0].giveCurrent,(int32_t)driveMotor[1].giveCurrent,
+ (int32_t)driveMotor[2].giveCurrent,(int32_t)driveMotor[3].giveCurrent);
+}
\ No newline at end of file
diff --git a/lnfantry/SAS_Code/naive_chassis_task.h b/lnfantry/SAS_Code/naive_chassis_task.h
index 76060e4c08d0a14d918e026fd81f54411ee1aa2f..6a99b21062a22f03abf06d6ac0490248254c2cb5 100644
--- a/lnfantry/SAS_Code/naive_chassis_task.h
+++ b/lnfantry/SAS_Code/naive_chassis_task.h
@@ -63,4 +63,7 @@ typedef struct //用来接受速度信息
void chassis_task(void const *pvParameters);
void get_toNUCspeedData_PID(toNUCDebug *toNUCSpeedData);
void get_toNUCspeedData_WANT(toNUCDebug *toNUCSpeedData);
+void OLED_chassis_speed(void);
+void OLED_chassis_yaw_ecd(void);
+void OLED_chassis_current(void);
#endif
diff --git a/lnfantry/application/oled_task.c b/lnfantry/application/oled_task.c
index ca5bfd7d658916d4599f6cec79477f80e5d5580d..7d5b29784bc6a5b2d28ac0f7ccf9fff2b6009dc7 100644
--- a/lnfantry/application/oled_task.c
+++ b/lnfantry/application/oled_task.c
@@ -1,7 +1,7 @@
/**
****************************(C) COPYRIGHT 2019 DJI****************************
* @file oled_task.c/h
- * @brief OLED show error value.oledĻʾ
+ * @brief OLED show error value.oled��Ļ��ʾ������
* @note
* @history
* Version Date Author Modification
@@ -24,13 +24,16 @@
#include "robot_total_mode.h"
#include "CAN_receive.h"
#include "servo_task.h"
+#include "remote_control.h"
#define OLED_CONTROL_TIME 10
#define REFRESH_RATE 10
// #define OLED_DETECT_OFFLINE_OFF
-// #define SHOW_CHASSIS_DATA
+
+// #define SHOW_CHASSIS_DATA_YAW_ECD
+// #define SHOW_CHASSIS_DATA_SPEED
// #define SHOW_SHOOT_DATA
// #define SHOW_NUC_DATA
@@ -40,6 +43,9 @@
// #define SHOW_SERVO_DATA
// #define SHOW_REFEREE_DATA
+// #define SHOW_RC_DATA
+// #define SHOW_CHASSISECD_DATA
+// #define SHOW_CHASSISCURENT_DATA
const error_t *error_list_local;
@@ -161,8 +167,8 @@ void oled_task(void const * argument)
-#ifdef SHOW_CHASSIS_DATA
- OLED_chassis();
+#ifdef SHOW_CHASSIS_DATA_YAW_ECD
+ OLED_chassis_yaw_ecd();
#endif
#ifdef SHOW_SHOOT_DATA
OLED_Shoot();
@@ -185,6 +191,22 @@ void oled_task(void const * argument)
#ifdef SHOW_REFEREE_DATA
OLED_referee();
#endif
+
+#ifdef SHOW_RC_DATA
+ OLED_RC();
+#endif
+
+#ifdef SHOW_CHASSIS_DATA_SPEED
+ OLED_chassis_speed();
+#endif
+
+#ifdef SHOW_CHASSISCURENT_DATA
+ OLED_chassis_current();
+#endif
+
+#ifdef SHOW_CHASSISECD_DATA
+ OLED_canreceive();
+#endif
OLED_refresh_gram();