协议编写完成,待测试

This commit is contained in:
草团君 2024-04-17 17:19:47 +08:00
parent 4c3cb563ee
commit 5870cee759
8 changed files with 686 additions and 512 deletions

View File

@ -5,7 +5,9 @@
"motor.h": "c", "motor.h": "c",
"main.h": "c", "main.h": "c",
"app.h": "c", "app.h": "c",
"type_traits": "c" "type_traits": "c",
"adcs.h": "c",
"uarts.h": "c"
}, },
"C_Cpp.errorSquiggles": "disabled" "C_Cpp.errorSquiggles": "disabled"
} }

View File

@ -158,44 +158,22 @@
<Ww> <Ww>
<count>1</count> <count>1</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>motor_state</ItemText> <ItemText>test_buffer,0x10</ItemText>
</Ww> </Ww>
<Ww> <Ww>
<count>2</count> <count>2</count>
<WinNumber>1</WinNumber> <WinNumber>1</WinNumber>
<ItemText>motor_ccr</ItemText> <ItemText>self_test,0x0A</ItemText>
</Ww>
<Ww>
<count>3</count>
<WinNumber>1</WinNumber>
<ItemText>step_motor_flag</ItemText>
</Ww>
<Ww>
<count>4</count>
<WinNumber>1</WinNumber>
<ItemText>motor-&gt;handle.step_motor.attribute,0x0A</ItemText>
</Ww>
<Ww>
<count>5</count>
<WinNumber>1</WinNumber>
<ItemText>motor_dir</ItemText>
</Ww>
<Ww>
<count>6</count>
<WinNumber>1</WinNumber>
<ItemText>deal_done_flag,0x0A</ItemText>
</Ww>
<Ww>
<count>7</count>
<WinNumber>1</WinNumber>
<ItemText>uarts</ItemText>
</Ww>
<Ww>
<count>8</count>
<WinNumber>1</WinNumber>
<ItemText>uart</ItemText>
</Ww> </Ww>
</WatchWindow1> </WatchWindow1>
<MemoryWindow1>
<Mm>
<WinNumber>1</WinNumber>
<SubType>0</SubType>
<ItemText>0x20000090</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow1>
<Tracepoint> <Tracepoint>
<THDelay>0</THDelay> <THDelay>0</THDelay>
</Tracepoint> </Tracepoint>
@ -238,16 +216,6 @@
<pszMrulep></pszMrulep> <pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp> <pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp> <pMultCmdsp></pMultCmdsp>
<SystemViewers>
<Entry>
<Name>System Viewer\DMA1</Name>
<WinId>35904</WinId>
</Entry>
<Entry>
<Name>System Viewer\USART1</Name>
<WinId>35905</WinId>
</Entry>
</SystemViewers>
<DebugDescription> <DebugDescription>
<Enable>1</Enable> <Enable>1</Enable>
<EnableFlashSeq>0</EnableFlashSeq> <EnableFlashSeq>0</EnableFlashSeq>
@ -508,7 +476,7 @@
<Group> <Group>
<GroupName>User</GroupName> <GroupName>User</GroupName>
<tvExp>1</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel> <cbSel>0</cbSel>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
@ -812,7 +780,7 @@
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>41</FileNumber> <FileNumber>41</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>..\User\board\board.c</PathWithFileName> <PathWithFileName>..\User\board\board.c</PathWithFileName>

View File

@ -1,5 +1,5 @@
:020000040800F2 :020000040800F2
:10000000704600209D01000895200008650D00083D :10000000604700209D01000895200008650D00084C
:1000100000000000000000000000000000000000E0 :1000100000000000000000000000000000000000E0
:100020000000000000000000000000003523000870 :100020000000000000000000000000003523000870
:100030000000000000000000EB210008372300084A :100030000000000000000000EB210008372300084A
@ -14,21 +14,21 @@
:1000C00000F002F800F03EF80CA030C80838241800 :1000C00000F002F800F03EF80CA030C80838241800
:1000D0002D18A246671EAB4654465D46AC4201D180 :1000D0002D18A246671EAB4654465D46AC4201D180
:1000E00000F030F87E460F3E0FCCB6460126334274 :1000E00000F030F87E460F3E0FCCB6460126334274
:1000F00000D0FB1AA246AB4633431847683F0000C6 :1000F00000D0FB1AA246AB4633431847B841000074
:10010000883F0000103A02D378C878C1FAD8520765 :10010000D8410000103A02D378C878C1FAD8520713
:1001100001D330C830C101D504680C6070470000BD :1001100001D330C830C101D504680C6070470000BD
:100120000023002400250026103A01D378C1FBD813 :100120000023002400250026103A01D378C1FBD813
:10013000520700D330C100D50B6070471FB51FBDFB :10013000520700D330C100D50B6070471FB51FBDFB
:1001400010B510BD00F0BDFD1146FFF7F7FF02F03E :1001400010B510BD00F0BDFD1146FFF7F7FF02F03E
:1001500075FE00F0D5FD03B4FFF7F2FF03BC00F01D :10015000A1FE00F0D5FD03B4FFF7F2FF03BC00F0F1
:10016000DBFD000070B505460C46164602E00FCCDC :10016000DBFD000070B505460C46164602E00FCCDC
:100170000FC5103E102EFAD2082E02D303CC03C5B1 :100170000FC5103E102EFAD2082E02D303CC03C5B1
:10018000083E042E07D301CC01C5361F03E02178B9 :10018000083E042E07D301CC01C5361F03E02178B9
:100190002970641C6D1C761EF9D270BD074880471B :100190002970641C6D1C761EF9D270BD074880471B
:1001A00007480047FEE7FEE7FEE7FEE7FEE7FEE75B :1001A00007480047FEE7FEE7FEE7FEE7FEE7FEE75B
:1001B00004480549054A064B704700007D240008A5 :1001B00004480549054A064B704700007D240008A5
:1001C000C1000008703C00207046002070400020F4 :1001C000C1000008603D0020604700206041002021
:1001D0007040002001E004C0091F0429FBD28B07F6 :1001D0006041002001E004C0091F0429FBD28B0705
:1001E00001D50280801CC90700D002707047002929 :1001E00001D50280801CC90700D002707047002929
:1001F0000BD0C30702D00270401C491E022904D351 :1001F0000BD0C30702D00270401C491E022904D351
:10020000830702D50280801C891EE3E70022EEE707 :10020000830702D50280801C891EE3E70022EEE707
@ -124,7 +124,7 @@
:1007A0004C00D4420AD15C00D4420BD04B4002D55D :1007A0004C00D4420AD15C00D4420BD04B4002D55D
:1007B00092021143E2E749004908DFE75940C90FB7 :1007B00092021143E2E749004908DFE75940C90FB7
:1007C000C90718E000200849D8E7054801420DD1C3 :1007C000C90718E000200849D8E7054801420DD1C3
:1007D0000342F7D0F2E700000000FF07483B0000AB :1007D0000342F7D0F2E700000000FF07983D000059
:1007E0000000F07F0000E0FF0000F87F1148594052 :1007E0000000F07F0000E0FF0000F87F1148594052
:1007F0000143C01241400020C0E70123089A9B0634 :1007F0000143C01241400020C0E70123089A9B0634
:100800009A4205DC032252078918C90FC907B5E7C8 :100800009A4205DC032252078918C90FC907B5E7C8
@ -193,7 +193,7 @@
:100BF000AB42F9D84900A942F6D8AB4201D1A9428B :100BF000AB42F9D84900A942F6D8AB4201D1A9428B
:100C0000F2D0A94201D1002101E061004908D005DC :100C0000F2D0A94201D1002101E061004908D005DC
:100C10000843F0BD1102090EFBD0FF200243D005AE :100C10000843F0BD1102090EFBD0FF200243D005AE
:100C2000F0BD0A460146104654E70000FE340000BD :100C2000F0BD0A460146104654E700004E3700006A
:100C30000000C07F0102C21504D00123DB07194365 :100C30000000C07F0102C21504D00123DB07194365
:100C4000002A0ADB9E239A1A02D40846D040704735 :100C4000002A0ADB9E239A1A02D40846D040704735
:100C5000FF2241001206914201D900207047C017BF :100C5000FF2241001206914201D900207047C017BF
@ -208,11 +208,11 @@
:100CE00000274908B6460026C0C5C0C5C0C5C0C556 :100CE00000274908B6460026C0C5C0C5C0C5C0C556
:100CF000C0C5C0C5C0C5C0C5403D49008D46704790 :100CF000C0C5C0C5C0C5C0C5403D49008D46704790
:100D000010B50446C046C0462046FFF724FA10BD81 :100D000010B50446C046C0462046FFF724FA10BD81
:100D100000487047103C002001491820ABBEFEE798 :100D100000487047003D002001491820ABBEFEE7A7
:100D20002600020070470000024600BF002A03D1DF :100D20002600020070470000024600BF002A03D1DF
:100D30000348018000BFFEE700BF012070470000AC :100D30000348018000BFFEE700BF012070470000AC
:100D4000C400002010B5024807C801F057FD10BDCF :100D4000D000002010B5024807C801F057FD10BDC3
:100D50008400002010B50249086802F087FC10BD2D :100D50008C00002010B50249086802F0AFFD10BDFC
:100D6000003A002000BFFEE770B504460D4600269D :100D6000003A002000BFFEE770B504460D4600269D
:100D7000204600F019F8002810D1A96868680843D7 :100D7000204600F019F8002810D1A96868680843D7
:100D8000E9680843E168074A11400843E0602069C8 :100D8000E9680843E168074A11400843E0602069C8
@ -225,32 +225,32 @@
:100DF0003CC2FEFFC268920892000A43C26070477C :100DF0003CC2FEFFC268920892000A43C26070477C
:100E00008168024A1140091D81607047E8FFFF7F39 :100E00008168024A1140091D81607047E8FFFF7F39
:100E100010B54A1E044B9A5C825853085B004A1E68 :100E100010B54A1E044B9A5C825853085B004A1E68
:100E2000014CA25C835010BD2B3F000810B54A1E38 :100E2000014CA25C835010BD7B41000810B54A1EE6
:100E3000044B9A5C825801231A434B1E014CE35C1D :100E3000044B9A5C825801231A434B1E014CE35C1D
:100E4000C25010BD2B3F000810B54A1E044B9A5CDF :100E4000C25010BD7B41000810B54A1E044B9A5C8D
:100E5000825802231A434B1E014CE35CC25010BD62 :100E5000825802231A434B1E014CE35CC25010BD62
:100E60002B3F000830B54B1E054CE35CC3580324F0 :100E60007B41000830B54B1E054CE35CC35803249E
:100E70002403A34313434C1E014D2C5D035130BD8D :100E70002403A34313434C1E014D2C5D035130BD8D
:100E8000923E000830B54B1E064CE35C1B185B68B5 :100E8000E240000830B54B1E064CE35C1B185B6863
:100E90001B0C1B0413434C1E024D2C5D2418636075 :100E90001B0C1B0413434C1E024D2C5D2418636075
:100EA00030BD00002B3F000830B54B1E054CE35C05 :100EA00030BD00007B41000830B54B1E054CE35CB3
:100EB000C358054C234013434C1E024D2C5D035177 :100EB000C358054C234013434C1E024D2C5D035177
:100EC00030BD0000923E0008EFBFFFFF10B54B1E83 :100EC00030BD0000E2400008EFBFFFFF10B54B1E31
:100ED000024CE35C1B18DA6010BD00002B3F0008D9 :100ED000024CE35C1B18DA6010BD00007B41000887
:100EE00030B54B1E054CE35CC3588024A343134329 :100EE00030B54B1E054CE35CC3588024A343134329
:100EF0004C1E024D2C5D035130BD0000923E000897 :100EF0004C1E024D2C5D035130BD0000E240000845
:100F000030B54B1E054CE35CC3580324A402A34335 :100F000030B54B1E054CE35CC3580324A402A34335
:100F100013434C1E014D2C5D035130BD923E000821 :100F100013434C1E014D2C5D035130BDE2400008CF
:100F200030B54B1E054CE35CC3582024A343134348 :100F200030B54B1E054CE35CC3582024A343134348
:100F30004C1E024D2C5D035130BD0000923E000856 :100F30004C1E024D2C5D035130BD0000E240000804
:100F400010B54B1E024CE35C1B189A6010BD0000EC :100F400010B54B1E024CE35C1B189A6010BD0000EC
:100F50002B3F000830B54B1E054CE35CC3584024C2 :100F50007B41000830B54B1E054CE35CC358402470
:100F6000A34313434C1E024D2C5D035130BD0000C2 :100F6000A34313434C1E024D2C5D035130BD0000C2
:100F7000923E000830B5A8231B584C1EA5000F2434 :100F7000E240000830B5A8231B584C1EA5000F24E2
:100F8000AC40A3434C1EA5001446AC402343A82408 :100F8000AC40A3434C1EA5001446AC402343A82408
:100F9000235030BD30B54B1E054CE35CC3580324D1 :100F9000235030BD30B54B1E054CE35CC3580324D1
:100FA0002402A34313434C1E014D2C5D035130BD5D :100FA0002402A34313434C1E014D2C5D035130BD5D
:100FB000923E0008024949688143014A51607047E6 :100FB000E2400008024949688143014A5160704794
:100FC00000040140024909688143014A11607047E9 :100FC00000040140024909688143014A11607047E9
:100FD00000040140024949680143014A51607047D9 :100FD00000040140024949680143014A51607047D9
:100FE000000401400249C9680143014AD1607047C9 :100FE000000401400249C9680143014AD1607047C9
@ -388,7 +388,7 @@
:1018200008400121090708430E49886000BF10499C :1018200008400121090708430E49886000BF10499C
:1018300010480068FEF7EEFC0A2148430546FEF713 :1018300010480068FEF7EEFC0A2148430546FEF713
:10184000E9FC044600E0641E002CFCD110B070BD21 :10184000E9FC044600E0641E002CFCD110B070BD21
:101850000010024000080050800002404C3E00088A :101850000010024000080050800002409C40000838
:10186000EFBFFFFF0024014008270140E8FFFF7F92 :10186000EFBFFFFF0024014008270140E8FFFF7F92
:10187000400D03000000002008B501200C49096B51 :10187000400D03000000002008B501200C49096B51
:1018800001430B4A11631146096B0140009100BFEF :1018800001430B4A11631146096B0140009100BFEF
@ -485,8 +485,8 @@
:101E30000B4AD1621146C96A0140019100BF00BF3F :101E30000B4AD1621146C96A0140019100BF00BF3F
:101E40004003029002200390002004900590069029 :101E40004003029002200390002004900590069029
:101E50000620079002A90748FFF73AF910B070BDB5 :101E50000620079002A90748FFF73AF910B070BDB5
:101E600000100240E703000000080140763E000831 :101E600000100240E703000000080140C6400008DF
:101E70007D3E00080004005000B585B000200190B0 :101E7000CD4000080004005000B585B0002001905E
:101E800002900390049010201649896B0143154A73 :101E800002900390049010201649896B0143154A73
:101E900091631146896B0140009100BF00BF002192 :101E900091631146896B0140009100BF00BF002192
:101EA000112000F0C3FB112000F03CFB0E486946F6 :101EA000112000F0C3FB112000F03CFB0E486946F6
@ -543,12 +543,12 @@
:1021D000B0434E683603304304465560D361886887 :1021D000B0434E683603304304465560D361886887
:1021E000106400BF1462002070BD7047014600BF3C :1021E000106400BF1462002070BD7047014600BF3C
:1021F0000548C068F022104010400009034A125CF4 :1021F0000548C068F022104010400009034A125CF4
:102200000846D0407047000000100240B53E00086C :102200000846D04070470000001002400541000819
:10221000014600BF0548C068072212021040000AAC :10221000014600BF0548C068072212021040000AAC
:10222000034A125C0846D04070470000001002408C :10222000034A125C0846D04070470000001002408C
:10223000C53E0008014600BF0548C0680722D2021B :1022300015410008014600BF0548C0680722D202C8
:102240001040C00A034A125C0846D04070470000A4 :102240001040C00A034A125C0846D04070470000A4
:1022500000100240C53E000810B500BF1648C06817 :10225000001002401541000810B500BF1648C068C4
:102260000C210840002806D004280CD0082812D0E1 :102260000C210840002806D004280CD0082812D0E1
:102270000C2816D111E0FFF769F8400B401C012132 :102270000C2816D111E0FFF769F8400B401C012132
:102280008140CC0315E0FFF74FF8002801D00B4C3C :102280008140CC0315E0FFF74FF8002801D00B4C3C
@ -562,7 +562,7 @@
:10230000461C0748C0680F2189040840800C084912 :10230000461C0748C0680F2189040840800C084912
:10231000085C604307463146FDF77CFFF8BD0000CE :10231000085C604307463146FDF77CFFF8BD0000CE
:102320000010024000093D000024F40000127A0071 :102320000010024000093D000024F40000127A0071
:10233000CD3E00087047704710B501204B49096831 :102330001D4100087047704710B501204B490968DE
:1023400081430143494A116000BF00BF00BF4748B5 :1023400081430143494A116000BF00BF00BF4748B5
:102350000068C007C00F0028F8D00120C00244491F :102350000068C007C00F0028F8D00120C00244491F
:1023600009680322D20291430143414A116000BF30 :1023600009680322D20291430143414A116000BF30
@ -584,12 +584,12 @@
:10246000044A4032D16000BF10BD0000002002408D :10246000044A4032D16000BF10BD0000002002408D
:1024700000700040001002400048E8017047000072 :1024700000700040001002400048E8017047000072
:1024800010B50848FEF7BEFF00280AD006480068CD :1024800010B50848FEF7BEFF00280AD006480068CD
:1024900001F010F800BF0120C0430249086100BFED :1024900001F0D2F800BF0120C0430249086100BF2B
:1024A00000BF10BD000801407C00002010B50A48A4 :1024A00000BF10BD000801407C00002010B50A48A4
:1024B000FEF7A8FF00280DD000BF08480068401CA8 :1024B000FEF7A8FF00280DD000BF08480068401CA8
:1024C0000649086000BF00BF0120C04302490861FF :1024C0000649086000BF00BF0120C04302490861FF
:1024D00000BF00BF10BD00000010004060000020E1 :1024D00000BF00BF10BD00000010004060000020E1
:1024E00010B50249086801F0D9F910BD003A002082 :1024E00010B50249086801F001FB10BD003A002058
:1024F00030B47446641E2578641CAB4204D3635D1B :1024F00030B47446641E2578641CAB4204D3635D1B
:102500005B00E31830BC18471D46F8E7002805DBE0 :102500005B00E31830BC18471D46F8E7002805DBE0
:10251000C206D20E01219140014A116070470000AD :10251000C206D20E01219140014A116070470000AD
@ -627,10 +627,10 @@
:1027100010BD000000E100E01CED00E0EFF31080D0 :1027100010BD000000E100E01CED00E0EFF31080D0
:10272000704780F31088704701460846103000E07B :10272000704780F31088704701460846103000E07B
:10273000001D0268002A03D1024A12689042F7D3B2 :10273000001D0268002A03D1024A12689042F7D3B2
:10274000704700002400002010B50648046803E02C :10274000704700002800002010B50648046803E028
:102750002046FFF7E9FF0446034800688442F7D3A8 :102750002046FFF7E9FF0446034800688442F7D3A8
:1027600010BD0000200000202400002010B5044609 :1027600010BD0000240000202800002010B5044601
:102770002146002000F0E6FC10BD10B501E001701C :102770002146002000F084FD10BD10B501E001707D
:10278000401C1346541EA2B2002BF8D110BD0FB44A :10278000401C1346541EA2B2002BF8D110BD0FB44A
:102790006A46908800990A690240824201D101226A :102790006A46908800990A690240824201D101226A
:1027A00000E00022D0B204B070470FB46A469188AE :1027A00000E00022D0B204B070470FB46A469188AE
@ -660,387 +660,424 @@
:10292000DA6000BF029901984A1E2B469A5C8258D1 :10292000DA6000BF029901984A1E2B469A5C8258D1
:1029300001231A434B1EEB5CC25000BF032C02D193 :1029300001231A434B1EEB5CC25000BF032C02D193
:102940000098FEF75DFAFEBD75000020E8FFFF7FEE :102940000098FEF75DFAFEBD75000020E8FFFF7FEE
:10295000083F00082038002038B5044600200090C9 :10295000584100082038002038B504460020009077
:102960002068002802D01D2834D129E000BF00F0E3 :102960002068002802D0222858D14DE000BF00F096
:10297000EBF81B49886000F0EFFD0546FEF75AF9B9 :1029700011F92D49886000F017FF0546FEF75AF956
:102980001749486000F0D9F81549486100F0F8FB94 :102980002949486008468068FF2109020840001272
:102990000546FEF74FF91249086100F0C7F81049E3 :1029900025498968090240182449088000F0F3F8A5
:1029A000086200F073F80546FEF744F90C49C86167 :1029A0002149486100F08AFC0546FEF743F91E49BB
:1029B00000BF0C480068606000BF1D20206000BFA1 :1029B000086108464069FF210902084001121A48CF
:1029C000084960680968081A0A2801D2002038BD41 :1029C0004069000208181949488000F0D5F81649F6
:1029D00000BFCCE70020206000900320F7E7000054 :1029D000086200F081F80546FEF72CF91249C8613B
:1029E000A00000206000002010B500F0F3FA00F015 :1029E0000846006AFF210902084001120E48006AE9
:1029F0007DF810BD10B500F087F810BD10B50020AF :1029F000000208180D49888000BF0D48006860601B
:102A00000F49086000F002FB00F092FA0D4807C879 :102A000000BF2220206000BF094960680968081AD9
:102A1000FFF736FF00F0B8F900BF00BF0A480068B2 :102A10000A2801D2002038BD00BFA8E700202060AE
:102A2000012108430849086000BF00BF0846C0688C :102A200000900320F7E70000AC00002084000020A5
:102A3000012108430449C86000BF00BF10BD000069 :102A30006000002010B500F06BFB00F07DF810BDC9
:102A40007C0000208400002000100040F8B50446FF :102A400010B500F087F810BD10B500200F490860E0
:102A50000026022500F078F80090FF2020706670B4 :102A500000F07AFB00F0B6FA0D4807C8FFF710FF48
:102A60000020A070E070257168460088FF210902EF :102A600000F0BEF900BF00BF0A480068012108431A
:102A700008400112684600880002081881B20091DF :102A70000849086000BF00BF0846C068012108433C
:102A80002A466946601D00F00DFAF8BDF8B500242D :102A80000449C86000BF00BF10BD00007C000020EA
:102A9000002500F04BF80646FEF710F904468B219E :102A90008C0000200010004070B505460E4614461C
:102AA000C9052046FEF716F806460C4901F00EF956 :102AA000002E01D0012100E000210846FF21C231A3
:102AB00005460B49284601F061F90A490090FEF7E6 :102AB000FEF73AF9002C01D0012100E00021084680
:102AC00009F807468321C905FEF704F806460649BA :102AC000FF21C331FEF730F985223146204600F060
:102AD00001F0FCF805462846F8BD000000803B45A3 :102AD00015FA657070BD0000F8B50024002500F0FF
:102AE00000001644000016430000964300200349EE :102AE0004BF80646FEF7EAF804468B21C905204656
:102AF0000860034908600349086070470800002027 :102AF000FDF7F0FF06460C4901F010FA05460B49B8
:102B0000100000201800002010B50548FFF724FF32 :102B0000284601F063FA0A490090FDF7E3FF074603
:102B1000044800F0FDFC044800F064F910BD00001A :102B10008321C905FDF7DEFF0646064901F0FEF9EF
:102B200008000020100000201800002010B504202C :102B200005462846F8BD000000803B4500001644DD
:102B3000FFF78AFE0446204610BD10B50320FFF7BC :102B30000000164300009643002003490860034943
:102B400083FE0446204610BD10B50920FFF77CFE29 :102B400008600349086070470C0000201400002052
:102B50000446204610BD0000F8B505460E4618276D :102B50001C00002010B50548FFF7FEFE044800F0F9
:102B60003946002000F0EEFA0446002C01D0012185 :102B600099FD044800F06AF910BD00000C00002037
:102B700000E0002108463621FEF7D6F82560A68041 :102B7000140000201C00002010B50420FFF764FEA4
:102B80000448A0600448E060044820610448606193 :102B80000446204610BD10B50320FFF75DFE044645
:102B90002046F8BDBB270008AB270008CB2700085C :102B9000204610BD10B50920FFF756FE044620461A
:102BA0008F27000870B504460D46002C01D0012186 :102BA00010BD0000F8B505460E461827394600202E
:102BB00000E0002108464321FEF7B6F8002D01D0C1 :102BB00000F066FB0446002C01D0012100E000215A
:102BC000012100E0002108464421FEF7ADF8A0787D :102BC00008463621FEF7B0F82560A6800448A060CC
:102BD000002802D001280AD104E02946204600F04E :102BD0000448E06004482061044860612046F8BD74
:102BE0001FFB05E02946204600F0D6F900E000BFB3 :102BE000BB270008AB270008CB2700088F27000869
:102BF00000BF70BDF8B504460F46002C01D001217E :102BF00070B504460D46002C01D0012100E00021F3
:102C000000E0002108463721FEF78EF82579681D7F :102C000008464421FEF790F8002D01D0012100E094
:102C1000C6B232462146024800F044F9F8BD000031 :102C1000002108464521FEF787F8A078002802D059
:102C2000143A0020F8B50646002E01D0012100E03C :102C200001280AD104E02946204600F097FB0AE07B
:102C3000002108465621FEF777F8104C00270020A7 :102C30002946204600F022FA05E02A4621460320D4
:102C400000903079401DC5B22A463146204600F03A :102C4000FFF72AFF00BF00BF70BD0000F8B50446C3
:102C500029F97819C7B2681E81B2601C00F0E1FF43 :102C50000F46002C01D0012100E000210846382158
:102C6000E055781CC7B23C20E055A81CC0B20090CB :102C6000FEF762F82579681DC6B232462146024851
:102C70002046009900F07CF8F8BD00001E3B0020C3 :102C700000F044F9F8BD0000143A0020F8B506460B
:102C8000FEB504460D4601200190002600270020D5 :102C8000002E01D0012100E0002108465821FEF766
:102C900000902078FF2806D16078002803D1681EB4 :102C90004BF8104C0027002000903079401DC5B241
:102CA000205C3C2803D0002001900198FEBD2079D3 :102CA0002A463146204600F029F97819C7B2681E35
:102CB000C01DC6B2AE4203D0002001900198F5E7D6 :102CB00081B2601C01F0DDF8E055781CC7B23C2001
:102CC000A81E275CE81E81B2601C00F0AAFF0090DD :102CC000E055A81CC0B200902046009900F07CF8A6
:102CD0000098874203D0002001900198E6E7019810 :102CD000F8BD00001E3B0020FEB504460D46012055
:102CE000E4E70000F8B507460C46154600262946DD :102CE000019000260027002000902078FF2806D1C0
:102CF0002046FFF7C5FF0646012E0AD10548007899 :102CF0006078002803D1681E205C3C2803D00020A7
:102D0000002806D129462046FFF774FF012001491B :102D000001900198FEBD2079C01DC6B2AE4203D02D
:102D10000870F8BD7800002070B5114800780128CF :102D1000002001900198F5E7A81E275CE81E81B20B
:102D200000D170BD0F4D104C21462846FFF73AFFE9 :102D2000601C01F0A6F800900098874203D00020B4
:102D30002046FFF777FFF02200210C48FFF71DFD2A :102D300001900198E6E70198E4E70000F8B507463E
:102D4000852200212846FFF718FD85220021204614 :102D40000C461546002629462046FFF7C5FF0646D5
:102D5000FFF713FD00200249087000BFE1E7000003 :102D5000012E0AD105480078002806D129462046D0
:102D600078000020143A0020993A00201E3B0020F1 :102D6000FFF774FF012001490870F8BD78000020CA
:102D700070B504460D4603492A460868214600F00E :102D700070B511480078002800D170BD0F4D104C7F
:102D8000DFFE70BD003A00200EB512480068002832 :102D800021462846FFF734FF2046FFF777FFF02261
:102D90001FD1F0210122104B0092019102900A46AE :102D900000210C48FFF7F1FC852200212846FFF7AF
:102DA00001210E4800F018FC0A490860002009685B :102DA000ECFC852200212046FFF7E7FC00200249C9
:102DB00008700B48074909688860032005490968BD :102DB000087000BFE1E7000078000020143A00200E
:102DC000C86002200349096808610249086800F0E8 :102DC000993A00201E3B002070B504460D46034989
:102DD00037FE0EBD003A0020E52C00080038014007 :102DD0002A460868214600F0DBFF70BD003A00205B
:102DE0000000024038B5044600200090206800280A :102DE0000EB51248006800281FD1F0210122104BB7
:102DF00002D0332819D10EE000BF7D20C00000F0C2 :102DF0000092019102900A4601210E4800F014FD54
:102E0000EFF90C49087000BF0B480068606000BF14 :102E00000A4908600020096808700B4807490968EA
:102E10003320206000BF084960680968081A6428E8 :102E10008860032005490968C860022003490968E1
:102E200001D2002038BD00BFE7E7002020600090FD :102E200008610249086800F033FF0EBD003A002037
:102E30000320F7E7040000206000002008B501200F :102E30003D2D0008003801400000024038B504462E
:102E40001749496B0143164A51631146496B0140CA :102E4000002000902068002802D0392819D110E015
:102E5000009100BF00BF00071146896B01439163D9 :102E500000BF00F043FC7D20C00000F05FFA0B498A
:102E60001146896B0140009100BF00BF0321081F7C :102E6000087000BF0A480068606000BF3920206019
:102E7000FFF764FBFFF760FAFEF71CFDFEF7FCFCB2 :102E700000BF074960680968081A00D138BD00BF63
:102E8000FEF7DAFBFFF734F8FEF7F6FFFEF742FF36 :102E8000E7E70020206000900320F7E7040000201F
:102E9000FFF7B4FDFFF7A8FD01E0FFF7ABFDFCE78E :102E90006000002008B501201749496B0143164A1C
:102EA0000010024010B503E00B780370491C401C71 :102EA00051631146496B0140009100BF00BF00070C
:102EB0001346541EA2B2002BF6D110BD70B50546C4 :102EB0001146896B014391631146896B0140009172
:102EC00044263146002000F03DF90446002C01D094 :102EC00000BF00BF0321081FFFF738FBFFF734FAEC
:102ED000012100E0002108466521FDF725FF20467D :102ED000FEF7F0FCFEF7D0FCFEF7AEFBFFF708F8BC
:102EE0000021442201E00170401C1346561EB2B27C :102EE000FEF7CAFFFEF716FFFFF7AEFDFFF7A2FDE4
:102EF000002BF8D100BF2570012D0AD10749E162EE :102EF00001E0FFF7A5FDFCE70010024010B503E07C
:102F000007492163074961630749A16307492164B0 :102F00000B780370491C401C1346541EA2B2002BC0
:102F100001E0002070BD00BF2046FBE74F320008F3 :102F1000F6D110BD70B5054644263146002000F0BC
:102F2000A332000863340008F73300086134000856 :102F2000AFF90446002C01D0012100E00021084641
:102F300010B598B00120FFF7C1FF134908601822AF :102F30006521FDF7F9FE20460021442201E00170E1
:102F4000124912A8FDF70EF91822104918310CA8E1 :102F4000401C1346561EB2B2002BF8D100BF2570AC
:102F5000FDF708F910200E490E4A09920A910B90CC :102F5000012D0AD10749E1620749216307496163ED
:102F600018220CA903A8FDF7FDF815A807C86B46A1 :102F60000749A1630749216401E0002070BD00BF4B
:102F700007C305480068C46A034812A90EC900685F :102F70002046FBE7D93300082D340008E735000868
:102F8000A04718B010BD00007C000020743F00086E :102F800081350008E5350008F8B505460C460B48C4
:102F9000000801400AD7A33C70B504460D46002C3A :102F90000068061D0A480778012D09D1007800282D
:102FA00001D0012100E000210846BC21FDF7BCFE54 :102FA00006D1227861680548736B0068984703E092
:102FB000E078002806D0012805D0032804D0042892 :102FB0000248316B006888473846F8BD7C00002025
:102FC00004D102E003E002E001E000E000BF00BF46 :102FC0000800002010B598B00120FFF7A3FF1349B7
:102FD00070BD000010B508242146002000F0B2F8B2 :102FD00008601822124912A8FDF7C4F818221049F7
:102FE000094908600968002901D0012100E0002199 :102FE00018310CA8FDF7BEF810200E490E4A0992C0
:102FF0000846B521FDF798FE082200210248006826 :102FF0000A910B9018220CA903A8FDF7B3F815A8A5
:10300000FFF7BBFB10BD00008000002010B5044698 :1030000007C86B4607C305480068C46A034812A98D
:10301000A1000C4B59584A00A3000B49C858002185 :103010000EC90068A04718B010BD00007C00002059
:1030200000F0A4F8A100094B5A58A300064908393A :10302000C4410008000801400AD7A33CF8B5054692
:10303000C858002100F09AF80121034808300155D2 :103030000C4600262879052802DA03263046F8BD1A
:1030400010BD0000F03E000854000020003F0008C2 :10304000687920700422A91D201DFFF757FF6068D2
:10305000F3B581B004460025002000902548005DAE :10305000009000990A0EFF231B041940090A521818
:10306000002804D123481838016820468847029870 :103060001B120099194009025118009A120689187A
:10307000002801D1401EFEBDA0001F4A1158029831 :103070000091009961603046E1E70000F8B505462F
:10308000FDF7C8F80646A0001B4A11580298FDF744 :103080000C46002D01D0012100E000210846E2217C
:10309000C1F8002900D0761CA00018490858451E28 :10309000FDF74AFE002C01D0012100E00021084686
:1030A00022E0A1001348083840586900405A00281F :1030A000E321FDF741FE194807680026E87800286B
:1030B00003D10098401C009001E00020009000988F :1030B00004D0012803D0022820D113E024E03946AF
:1030C000B04210D1002707E0A2000A480838805813 :1030C0002846FFF7B3FF0646002E04D139460120FB
:1030D000EA19520086527F1CB742F5D3A000064978 :1030D000FFF75AFF0646852229462046FFF70EFFD6
:1030E00008586843C7E76D1E002DDADA0020C04398 :1030E000667011E039460020FFF74EFF0646852244
:1030F000C1E700005C000020F83E0008F03E000838 :1030F00029462046FFF702FF667005E02246294672
:1031000070B504460026002508E0A1000B48405891 :103100000320FFF7C9FC00BF00BFF8BD800000200E
:103110006900405A002800D0761C6D1CA0000849A8 :1031100010B508242146002000F0B2F809490860E3
:103120000858A842F1D8A2000B469958642272436D :103120000968002901D0012100E000210846DB21C7
:103130001046FDF76FF8C0B270BD000054000020CB :10313000FDF7FAFD0822002102480068FFF71DFB99
:10314000F03E000870B504460E4631462046FFF7B3 :1031400010BD00008000002010B50446A1000C4B0B
:103150007FFF0546681C002800D170BDA100024811 :1031500059584A00A3000B49C858002100F0A4F8B0
:1031600040584019F9E700004C00002030B50346F4 :10316000A100094B5A58A30006490839C858002144
:1031700001E019705B1C1446521E002CF9D130BDC1 :1031700000F09AF8012103480830015510BD000005
:10318000F8B500240025FFF7D8FC0646FDF796FDAC :10318000404100085400002050410008F3B581B0D0
:1031900004468B21C9052046FDF79CFC06460C49D8 :1031900004460025002000902548005D002804D149
:1031A00000F094FD05460B49284600F0E7FD0A496A :1031A000234818380168204688470298002801D132
:1031B0000090FDF78FFC07468321C905FDF78AFCC7 :1031B000401EFEBDA0001F4A11580298FDF72AF8D4
:1031C0000646064900F082FD05462846F8BD000087 :1031C0000646A0001B4A11580298FDF723F8002973
:1031D00000803B45000016440000164300007A447E :1031D00000D0761CA00018490858451E22E0A10026
:1031E000F8B5044600252046FDF768FD06460A4866 :1031E0001348083840586900405A002803D1009815
:1031F0000068FDF763FD07463146FDF76BFC0546A9 :1031F000401C009001E0002000900098B04210D1E7
:103200000020054908600549284600F05FFD064694 :10320000002707E0A2000A4808388058EA1952004F
:10321000FDF710FDF8BD0000700000200000C8425E :1032100086527F1CB742F5D3A00006490858684380
:1032200070B505460C46E878002806D0012808D07D :10322000C7E76D1E002DDADA0020C043C1E70000B9
:10323000022807D0032807D105E02046FFF706FC47 :103230005C000020484100084041000870B5044689
:1032400003E002E001E000E000BF00BF70BD0FB48A :103240000026002508E0A1000B4840586900405ABC
:10325000F8B5044613ADE0CD002C01D0012100E00B :10325000002800D0761C6D1CA00008490858A84220
:10326000002108460621FDF75FFD6A46118C07988C :10326000F1D8A2000B469958642272431046FCF72D
:10327000FFF772FC60606A46118F0D98FFF76CFCD7 :10327000D1FFC0B270BD00005400002040410008E2
:10328000A060E6602761656100BFE068FEF770F846 :1032800070B504460E4631462046FFF77FFF0546DF
:103290002169E068FEF768F800BFF8BC08BC04B01C :10329000681C002800D170BDA100024840584019A8
:1032A0001847F3B585B00546002D01D0012100E097 :1032A000F9E700004C00002030B5034601E019703A
:1032B000002108461121FDF737FD2C1D002C01D0FF :1032B0005B1C1446521E002CF9D130BDF8B5002419
:1032C000012100E0002108461321FDF72DFD06989D :1032C0000025FFF760FC0646FDF7F8FC04468B215D
:1032D000207601216176069800283ED12168086990 :1032D000C9052046FDF7FEFB06460C4900F01EFE20
:1032E00049690191009020680490206880680390EB :1032E00005460B49284600F071FE0A490090FDF79B
:1032F0000C21049841180A7813464A7812021343A5 :1032F000F1FB07468321C905FDF7ECFB06460649AD
:103300008A7812041343C97809060B43082141182F :1033000000F00CFE05462846F8BD000000803B4555
:103310000E7832464E78360232438E783604324387 :10331000000016440000164300007A44F8B5044645
:10332000C97809060A430779394647793F02394384 :1033200000252046FDF7CAFC06460A480068FDF75E
:1033300087793F043943C6793606314306463778E4 :10333000C5FC07463146FDF7CDFB05460020054993
:10334000384677783F023843B7783F043843F678F9 :1033400008600549284600F0E9FD0646FDF772FCD5
:1033500036063043039EB0473DE02168086949695D :10335000F8BD0000700000200000C84270B50546AE
:1033600001910090206804902068C06803900C21AF :103360000C46002D01D0012100E000210846FF217C
:10337000049841180A7813464A78120213438A784F :103370004D31FDF7D9FC002C01D0012100E00021E6
:1033800012041343C97809060B43082141180E782B :103380000846FF214E31FDF7CFFC0026E8780328E0
:1033900032464E78360232438E7836043243C9784C :1033900001DD032600E000BFFF2020706670A878E2
:1033A00009060A430779394647793F023943877945 :1033A000A070E878E070E878032807DB0620207139
:1033B0003F043943C67936063143064637783846E6 :1033B00022790849601DFFF7A1FD09E00220207174
:1033C00077783F023843B7783F043843F6783606BB :1033C0002279E0784000034BC118601DFFF796FD9D
:1033D0003043039EB04700BFA0680168012211433B :1033D00070BD0000840000200FB4F8B5044613ADA2
:1033E000016000BFE168A068026A0A43026200BF90 :1033E000E0CD002C01D0012100E00021084606219B
:1033F00000BF07B0F0BDFEB505460E461746002DCE :1033F000FDF79AFC6A46118C0798FFF7D3FB6060D3
:1034000001D0012100E0002108462B21FDF78CFCB2 :103400006A46118F0D98FFF7CDFBA060E66027613B
:103410002C1D002C01D0012100E0002108462D21A7 :10341000656100BFE068FDF7ABFF2169E068FDF77B
:10342000FDF782FC607E012800D1FEBD3046FDF72D :10342000A3FF00BFF8BC08BC04B01847F3B585B0D3
:1034300045FC00902169FDF74DFB0190FDF7FAFB7B :103430000546002D01D0012100E0002108461121A0
:10344000E06100216162E069002803D12846216B18 :10344000FDF772FC2C1D002C01D0012100E00021B1
:10345000884703E039462846E26A904700BFE4E720 :1034500008461321FDF768FC069820760121617665
:10346000704770B50546002D01D0012100E0002114 :10346000069800283ED121680869496901910090B9
:1034700008461C21FDF758FC2C1D002C01D0012111 :10347000206804902068806803900C21049841180B
:1034800000E0002108461E21FDF74EFC0021617678 :103480000A7813464A78120213438A7812041343C7
:103490006161E16100BFA068FDF76AFFE168A068B3 :10349000C97809060B43082141180E7832464E7848
:1034A000FDF762FF00BFA06B002802D02846A16B89 :1034A000360232438E7836043243C97809060A431D
:1034B000884770BD70B50546002D01D0012100E0A0 :1034B0000779394647793F02394387793F043943D1
:1034C000002108464C21FDF72FFC2C1D002C01D0BB :1034C000C6793606314306463778384677783F0264
:1034D000012100E0002108464E21FDF725FCE069AE :1034D0003843B7783F043843F67836063043039EC6
:1034E000401EE061606A401C6062207E012803D1BA :1034E000B0473DE021680869496901910090206872
:1034F000206A401C206202E0206A401E2062E069CF :1034F00004902068C06803900C21049841180A7851
:10350000002804D100BF00BF2846216B884770BD4A :1035000013464A78120213438A7812041343C97887
:1035100038B50446002000902068002802D02828F2 :1035100009060B43082141180E7832464E783602D0
:1035200013D10AE000BFFFF7F7FB00BF09480068AE :1035200032438E7836043243C97809060A43077954
:10353000606000BF2820206000BF064960680968FD :10353000394647793F02394387793F043943C67991
:10354000081A00D138BD00BFEDE7002020600090D0 :103540003606314306463778384677783F023843A7
:103550000320F7E760000020F0B587B000240020CA :10355000B7783F043843F67836063043039EB047C9
:103560000690FFF7F1FA0546FDF7A8FB04468B210C :1035600000BFA068016801221143016000BFE1684B
:10357000C9052046FDF7AEFA0546114900F0A6FB45 :10357000A068026A0A43026200BF00BF07B0F0BD44
:1035800006901049069800F0F9FB0F490190FDF7ED :10358000F8B505460E461746002D01D0012100E092
:10359000A1FA0746FDF774FA05460C4A0C4BFCF7F6 :10359000002108462B21FDF7C7FB2C1D002C01D074
:1035A00027FF00220B4B03910290FDF745F905918F :1035A000012100E0002108462D21FDF7BDFB607ED2
:1035B0000490FCF7DFFE0690069807B0F0BD00000F :1035B000012800D1F8BD30462169FDF78BFA009053
:1035C00000803B450080BB440000CA426891ED7C0E :1035C000FDF738FBE06100216162E069002803D16A
:1035D0003F35174000002440FFB581B00646154630 :1035D0002846216B884703E039462846E26A90472F
:1035E0000B9F002E01D0012100E00021084684211C :1035E00000BFE7E7704770B50546002D01D0012107
:1035F000FDF79AFB3420FFF7B9F80446002C01D000 :1035F00000E0002108461C21FDF796FB2C1D002C45
:10360000012100E0002108468721FDF78DFB049889 :1036000001D0012100E0002108461E21FDF78CFBBE
:10361000E062A5830C9820632785002D0DDD2846E8 :10361000002161766161E16100BFA068FDF7A8FE4D
:10362000FFF7A4F8A061A169002901D0012100E001 :10362000E168A068FDF7A0FE00BFA06B002802D0F3
:10363000002108469621FDF777FB002F0DDD384667 :103630002846A16B884770BD70B50546002D01D0A6
:10364000FFF794F86062616A002901D0012100E06F :10364000012100E0002108464C21FDF76DFB2C1DF7
:10365000002108469D21FDF767FB0298A0752021F7 :10365000002C01D0012100E0002108464E21FDF799
:103660000A9808556660204605B0F0BD70B504465E :1036600063FBE069401EE061606A401C6062207E8E
:10367000002C01D0012100E000210846FF216B3120 :10367000012803D1206A401C206202E0206A401E1B
:10368000FDF752FB2169A068FDF7C2FB206903002A :103680002062E069002804D100BF00BF2846216BFA
:10369000FEF72EFF0873051423334353637300BFF3 :10369000884770BD38B50446002000902068002897
:1036A000A0680168022211404908002904D0A068DE :1036A00002D02D2813D10AE000BFFFF761FB00BF55
:1036B0000221416000BF00BF00BF5FE000BFA06803 :1036B00009480068606000BF2D20206000BF0649F7
:1036C0000168202211404909002904D0A068202166 :1036C00060680968081A00D138BD00BFEDE7002026
:1036D000416000BF00BF00BF50E000BFA0680168AC :1036D000206000900320F7E76000002070B500250F
:1036E000012252021140490A002904D0A068114663 :1036E0000F4C10480078032800DB70BD0D480078AF
:1036F000416000BF00BF00BF40E000BFA06801689C :1036F000012802D0022808D106E00A49487821466C
:10370000012252031140490B002904D0A068114640 :1037000000F02CF8054601E000E000BF00BF2946AC
:10371000416000BF00BF00BF30E000BFA06801688B :10371000204600F009F800200249087000BFE4E7E5
:10372000012252041140490C002904D0A06811461E :103720000E3C00209800002070B504460D4600268F
:10373000416000BF00BF00BF20E000BFA06801687B :1037300029462046FFF7D0FA0646012E0AD1064850
:10374000012252051140490D002904D0A0681146FC :103740000078002806D129462046FFF77FFA01209D
:10375000416000BF00BF00BF10E000BFA06801686B :103750000149087070BD000078000020F0B5A3B0EA
:10376000012252061140490E002904D0A0681146DA :1037600006460D4600270024FF216846017100210E
:10377000416000BF00BF00BF00E000BF00BF656840 :1037700041718171C67101720524F0222846FEF75D
:1037800000BF00BFFEF7CAFF06460120FEF7C9FFD3 :10378000FCFF224601A92846FFF7B8FB601E81B264
:1037900028684021084328603046FEF7C2FF00BF7A :10379000681C00F06EFB2855641C3C202855641CF6
:1037A00000BF01212A20015520690300FEF7A0FE79 :1037A0002746384623B0F0BDF0B587B0002400208E
:1037B0000873051423334353637300BFA068016883 :1037B0000690FFF7EFF90546FDF780FA04468B21E6
:1037C00008221140C908002904D0A06808214160DE :1037C000C9052046FDF786F90546114900F0A6FB1C
:1037D00000BF00BF00BF5FE000BFA068016880229B :1037D00006901049069800F0F9FB0F490190FDF79B
:1037E0001140C909002904D0A0688021416000BFB0 :1037E00079F90746FDF74CF905460C4A0C4BFCF7F6
:1037F00000BF00BF50E000BFA06801680122D202F4 :1037F000FFFD00220B4B03910290FDF71DF8059190
:103800001140C90A002904D0A0681146416000BFD8 :103800000490FCF7B7FD0690069807B0F0BD0000E5
:1038100000BF00BF40E000BFA06801680122D203E2 :1038100000803B450080BB440000CA426891ED7CBB
:103820001140C90B002904D0A0681146416000BFB7 :103820003F35174000002440FFB581B006461546DD
:1038300000BF00BF30E000BFA06801680122D204D1 :103830000B9F002E01D0012100E0002108468421C9
:103840001140C90C002904D0A0681146416000BF96 :10384000FDF772FA3420FEF791FF0446002C01D0F8
:1038500000BF00BF20E000BFA06801680122D205C0 :10385000012100E0002108468721FDF765FA049860
:103860001140C90D002904D0A0681146416000BF75 :10386000E062A5830C9820632785002D0DDD284696
:1038700000BF00BF10E000BFA06801680122D206AF :10387000FEF77CFFA061A169002901D0012100E0D1
:103880001140C90E002904D0A0681146416000BF54 :10388000002108469621FDF74FFA002F0DDD38463E
:1038900000BF00BF00E000BF00BF70BD70B50446B0 :10389000FEF76CFF6062616A002901D0012100E03F
:1038A000002C01D0012100E000210846FF21243135 :1038A000002108469D21FDF73FFA0298A0752021CE
:1038B000FDF73AFA606801682022114049090029A1 :1038B0000A9808556660204605B0F0BD70B504460C
:1038C0001BD06068C16911404909002915D06068A2 :1038C000002C01D0012100E000210846FF216B31CE
:1038D000416AC9B2A28A501CA082A0698154A07D0D :1038D000FDF72AFA2169A068FDF79AFA206903002A
:1038E000002851D1E06A002804D0A28A2078E36A37 :1038E000FEF706FE0873051423334353637300BFCA
:1038F000A16998470020A08246E060680168102214 :1038F000A0680168022211404908002904D0A0688C
:103900001140090900293FD06068C16911400909C7 :103900000221416000BF00BF00BF5FE000BFA068B0
:10391000002939D0A07D012831D1E168A068FDF7E8 :103910000168202211404909002904D0A068202113
:1039200077FAE168A0684A1E444B9A5C1218526804 :10392000416000BF00BF00BF50E000BFA068016859
:10393000A08B801AA082E06A002817D0A08A0028F5 :10393000012252021140490A002904D0A068114610
:1039400014DDA08AA18B884210DCA28A2078E36A69 :10394000416000BF00BF00BF40E000BFA068016849
:10395000A16998470021A28BA06901E00170401C79 :10395000012252031140490B002904D0A0681146EE
:103960001346551EAAB2002BF8D100BFA28BE16806 :10396000416000BF00BF00BF30E000BFA068016839
:10397000A068FDF787FAE168A068FDF757FA002014 :10397000012252041140490C002904D0A0681146CC
:10398000A0826068FDF77AFD6068016840221140FE :10398000416000BF00BF00BF20E000BFA068016829
:10399000890900290ED06068FDF728FE002809D0AB :10399000012252051140490D002904D0A0681146AA
:1039A000206B002801D0206B8047606840210162B5 :1039A000416000BF00BF00BF10E000BFA068016819
:1039B00000BF00BF60680168FF2201321140090AA0 :1039B000012252061140490E002904D0A068114688
:1039C00000290DD06068C169C907C90F01225140A3 :1039C000416000BF00BF00BF00E000BF00BF6568EE
:1039D0005140002904D060680121016200BF00BF8E :1039D00000BF00BFFEF7A2FE06460120FEF7A1FED3
:1039E0006068FDF7F1FD002809D06068FDF7ECFD87 :1039E00028684021084328603046FEF79AFE00BF51
:1039F000002804D060680221016200BF00BF606837 :1039F00000BF01212A20015520690300FEF778FD50
:103A0000FDF7E8FD002809D06068FDF7E3FD002818 :103A00000873051423334353637300BFA068016830
:103A100004D060680421016200BF00BF6068FDF748 :103A100008221140C908002904D0A068082141608B
:103A2000DFFD002809D06068FDF7DAFD002804D02A :103A200000BF00BF00BF5FE000BFA0680168802248
:103A300060680821016200BF00BF70BD2B3F000815 :103A30001140C909002904D0A0688021416000BF5D
:103A400070B50446A07D002803D16068FDF722FD13 :103A400000BF00BF50E000BFA06801680122D202A1
:103A500075E06068FDF712FD6068FDF71BFD2169E8 :103A50001140C90A002904D0A0681146416000BF86
:103A6000A068FDF7D5F9E168A068FDF7D1F901215B :103A600000BF00BF40E000BFA06801680122D20390
:103A70006068FDF706FD05462A46E168A068FDF787 :103A70001140C90B002904D0A0681146416000BF65
:103A80005FFAA269E168A068FDF720FAA28BE168FD :103A800000BF00BF30E000BFA06801680122D2047F
:103A9000A068FDF7F7F9E168A068FDF7D5F9E168DE :103A90001140C90C002904D0A0681146416000BF44
:103AA000A068FDF7C3F9656800BF00BFFEF736FEEA :103AA00000BF00BF20E000BFA06801680122D2056E
:103AB00006460120FEF735FEA86840210843A860AD :103AB0001140C90D002904D0A0681146416000BF23
:103AC0003046FEF72EFE00BF00BF656800BF00BF96 :103AC00000BF00BF10E000BFA06801680122D2065D
:103AD000FEF724FE06460120FEF723FE286810218B :103AD0001140C90E002904D0A0681146416000BF02
:103AE000084328603046FEF71CFE00BF00BF0021DF :103AE00000BF00BF00E000BF00BF70BD70B504465E
:103AF0006068FDF7C6FC05462A462169A068FDF707 :103AF000002C01D0012100E000210846FF212431E3
:103B00001FFA626A2169A068FDF7E0F92169A068DF :103B0000FDF712F960680168202211404909002977
:103B1000FDF79AF9656800BF00BFFEF7FFFD064696 :103B10001BD06068C16911404909002915D060684F
:103B20000120FEF7FEFDA86880210843A86030460A :103B2000416AC9B2A28A501CA082A0698154A07DBA
:103B3000FEF7F7FD00BF00BF01212A20015570BD2F :103B3000002851D1E06A002804D0A28A2078E36AE4
:103B4000F8B504460D461646002C01D0012100E0D0 :103B4000A16998470020A08246E0606801681022C1
:103B500000210846F321FDF7E7F8002D01D00121EF :103B50001140090900293FD06068C1691140090975
:103B600000E000210846F421FDF7DEF8002E01DD1B :103B6000002939D0A07D012831D1E168A068FDF796
:103B7000012100E000210846F521FDF7D5F80027D6 :103B70004FF9E168A0684A1E444B9A5C12185268DB
:103B80002020005D012823D12A20005D01281FD1BB :103B8000A08B801AA082E06A002817D0A08A0028A3
:103B900000212A2001552946606A009603E00A7830 :103B900014DDA08AA18B884210DCA28A2078E36A17
:103BA0000270491C401C009A531E9BB20093002ACD :103BA000A16998470021A28BA06901E00170401C27
:103BB000F5D100BF2169A068FDF72AF932462169D5 :103BB0001346551EAAB2002BF8D100BFA28BE168B4
:103BC000A068FDF75FF92169A068FDF72FF926E0ED :103BC000A068FDF75FF9E168A068FDF72FF9002014
:103BD0000027002014E0002705E039467A1CD7B200 :103BD000A0826068FDF752FC6068016840221140D5
:103BE000FE2900DBF8BD6168CA6980231A40D2094A :103BE000890900290ED06068FDF700FD002809D082
:103BF000002AF2D02A5C61688A6200BF411C88B248 :103BF000206B002801D0206B804760684021016263
:103C0000B042E8DB002705E03846791CCFB2FE2839 :103C000000BF00BF60680168FF2201321140090A4D
:103C100000DBE7E76068FDF7E9FC0028F4D000BFAF :103C100000290DD06068C169C907C90F0122514050
:103C2000E0E730B5024614460020002304E0257882 :103C20005140002904D060680121016200BF00BF3B
:103C30006840641C5D1CABB28B42F8DB30BD0000F9 :103C30006068FDF7C9FC002809D06068FDF7C4FC86
:103C400070B501250400ED074C4020D4441A01D280 :103C4000002804D060680221016200BF00BF6068E4
:103C5000001B0919C60D4B00F2B2FF2A29D01B0E1A :103C5000FDF7C0FC002809D06068FDF7BBFC002818
:103C60002CD000020C02D31A2C43DC402843051947 :103C600004D060680421016200BF00BF6068FDF7F6
:103C700010D2280A02D3401C6D0611D0761EF6051C :103C7000B7FC002809D06068FDF7B2FC002804D02A
:103C80008019FF2A00DA70BDC00DC00570BD694003 :103C800060680821016200BF00BF70BD7B41000871
:103C900000F07AF801200543C541521C761CE8E784 :103C900070B50446A07D002803D16068FDF7FAFBEB
:103CA00064089C40C90161408900E7D10124A04318 :103CA00075E06068FDF7EAFB6068FDF7F3FB2169EA
:103CB000E4E71B0E440200D0034870BD002AFCD18B :103CB000A068FDF7ADF8E168A068FDF7A9F801215B
:103CC000C00FC00770BD00BF0000C07F70B54200CC :103CC0006068FDF7DEFB05462A46E168A068FDF75F
:103CD00064414B005C41120E39D01B0E38D0FF2AD4 :103CD00037F9A269E168A068FDF7F8F8A28BE168FE
:103CE0003CD0FF2B3AD040024902400A490A060064 :103CE000A068FDF7CFF8E168A068FDF7ADF8E168DE
:103CF00045184E43000A090AD2184843ED017F3A9D :103CF000A068FDF79BF8656800BF00BFFEF70EFDEA
:103D00000104731A4019190C4318990F04D00121AA :103D000006460120FEF70DFDA86840210843A86083
:103D10005B0849075B1A521CD80904D3401CF50301 :103D10003046FEF706FD00BF00BF656800BF00BF6C
:103D200001D19D0607D0FF2A08D2D50506D0E407A9 :103D2000FEF7FCFC06460120FEF7FBFC286810218C
:103D30002043401970BD0125A843F4E7002A01DCA7 :103D3000084328603046FEF7F4FC00BF00BF0021B6
:103D4000E00770BD2402FF202043C00570BD1B0E9C :103D40006068FDF79EFB05462A462169A068FDF7DD
:103D5000FF2A03D0FF2B01D0E00770BDFF264500EE :103D5000F7F8626A2169A068FDF7B8F82169A068E0
:103D60003606B54206D84D00B54203D8D218FF2A10 :103D6000FDF772F8656800BF00BFFEF7D7FC064696
:103D700000D0E7E7004870BD0000C07F70B50125A6 :103D70000120FEF7D6FCA86880210843A8603046E1
:103D80000400ED074C4022D4441A02D26C40001BC0 :103D8000FEF7CFFC00BF00BF01212A20015570BD06
:103D90000919C60D4B00F2B2FF2A4BD01B0E50D0B2 :103D9000F8B504460D461646002C01D0012100E07E
:103DA00000020C02D31A2C43DC40A843051B05D5A6 :103DA00000210846F321FCF7BFFF002D01D00121BF
:103DB000AD0019D36D08761E521E37D0F605280ABD :103DB00000E000210846F421FCF7B6FF002E01DDEB
:103DC00001D2801970BD70416D0603D070BD69408D :103DC000012100E000210846F521FCF7ADFF0027A6
:103DD000FFF73CFF9C4009026140490001D0401EB2 :103DD0002020005D012823D12A20005D01281FD169
:103DE00070BD0124A04370BD6D081DD001202B0CB7 :103DE00000212A2001552946606A009603E00A78DE
:103DF00001D12D0410302B0E01D12D0208302B0FD4 :103DF0000270491C401C009A531E9BB20093002A7B
:103E000001D12D01001DAB0F01D1AD00801CEB0FC6 :103E0000F5D100BF2169A068FDF702F832462169AB
:103E100001D16D00401C6D00361A121A680AF505B2 :103E1000A068FDF737F82169A068FDF707F826E0EC
:103E20004019012A02DB70BD002070BDC036300A87 :103E20000027002014E0002705E039467A1CD7B2AD
:103E3000C00770BD1B0E440201D1FF2B00D1024808 :103E3000FE2900DBF8BD6168CA6980231A40D209F7
:103E400070BD002AF0D070BD0000C07F081C304457 :103E4000002AF2D02A5C61688A6200BF411C88B2F5
:103E5000586C80000000000400040000080000000E :103E5000B042E8DB002705E03846791CCFB2FE28E7
:103E600008000008000000080000040008000C081A :103E600000DBE7E76068FDF7C1FB0028F4D000BF86
:103E70001C3044586C80000000000400040000085E :103E7000E0E730B5024614460020002304E0257830
:103E8000000000080000080000000800000400080E :103E80006840641C5D1CABB28B42F8DB30BD0000A7
:103E9000000C081C3044586C800000000004000432 :103E900070B501250400ED074C4020D4441A01D22E
:103EA00000000800000008000008000000080000F2 :103EA000001B0919C60D4B00F2B2FF2A29D01B0EC8
:103EB000040008000C0000000000000000010203E4 :103EB0002CD000020C02D31A2C43DC4028430519F5
:103EC00004060708090000000001020304030406B9 :103EC00010D2280A02D3401C6D0611D0761EF605CA
:103ED000080C101820305F6C697374006C6973747F :103ED0008019FF2A00DA70BDC00DC00570BD6940B1
:103EE00020616C6C20636F6D6D616E64000000007A :103EE00000F07AF801200543C541521C761CE8E732
:103EF000A0010000010000002000000020000000E0 :103EF00064089C40C90161408900E7D10124A043C6
:103F00000034000020000000081C3044586C800081 :103F0000E4E71B0E440200D0034870BD002AFCD138
:103F10000000000400040000080000000800000881 :103F1000C00FC00770BD00BF0000C07F70B5420079
:103F2000000000080000040008000C081C30445881 :103F200064414B005C41120E39D01B0E38D0FF2A81
:103F30006C8000000000040004000008000000087D :103F30003CD0FF2B3AD040024902400A490A060011
:103F4000000008000000080000040008000C000049 :103F400045184E43000A090AD2184843ED017F3A4A
:103F5000081C3044586C800000000004000400007D :103F50000104731A4019190C4318990F04D0012158
:103F6000080000000800000800000008000004002D :103F60005B0849075B1A521CD80904D3401CF503AF
:103F700008000C00000400500020000000000000B9 :103F700001D19D0607D0FF2A08D2D50506D0E40757
:103F800000000000000000000000000000040050DD :103F80002043401970BD0125A843F4E7002A01DC55
:103F90000010000000000000000000000000000011 :103F9000E00770BD2402FF202043C00570BD1B0E4A
:103FA0000000000080807F7E7D7C7B7A7978777648 :103FA000FF2A03D0FF2B01D0E00770BDFF2645009C
:103FB00076757473727171706F6E6E6D6C6C6B6A06 :103FB0003606B54206D84D00B54203D8D218FF2ABE
:103FC0006A696868676666656464636362616160A4 :103FC00000D0E7E7004870BD0000C07F70B5012554
:103FD000605F5F5E5E5D5D5C5C5B5B5A5A59595821 :103FD0000400ED074C4022D4441A02D26C40001B6E
:103FE000585757565655555554545353525252518B :103FE0000919C60D4B00F2B2FF2A4BD01B0E50D060
:103FF000515050504F4F4F4E4E4D4D4D4C4C4C4BE1 :103FF00000020C02D31A2C43DC40A843051B05D554
:104000004B4B4A4A4A494949484848474747474627 :10400000AD0019D36D08761E521E37D0F605280A6A
:104010004646454545444444444343434342424263 :1040100001D2801970BD70416D0603D070BD69403A
:10402000424141418182838485868788898B8C8D3A :10402000FFF73CFF9C4009026140490001D0401E5F
:104030008E8F919293959697999A9C9D9FA0A2A3FB :1040300070BD0124A04370BD6D081DD001202B0C64
:10404000A5A7A8AAACAEB0B2B3B5B7B9BCBEC0C242 :1040400001D12D0410302B0E01D12D0208302B0F81
:10405000C5C7C9CCCED1D4D7D9DCDFE2E6E9ECF0D4 :1040500001D12D01001DAB0F01D1AD00801CEB0F74
:10406000F3F7FAFE8440000800000020A0000000E2 :1040600001D16D00401C6D00361A121A680AF50560
:104070000401000824410008A0000020D0450000F1 :104070004019012A02DB70BD002070BDC036300A35
:1040800020010008000020000000000000000000E7 :10408000C00770BD1B0E440201D1FF2B00D10248B6
:104090000000000000000000000000000000000020 :1040900070BD002AF0D070BD0000C07F081C304405
:1040A0000000000000000000000000000000000010 :1040A000586C8000000000040004000008000000BC
:1040B0000000000000000000000000000000000000 :1040B00008000008000000080000040008000C08C8
:1040C00000000000000000000D3000080131000871 :1040C0001C3044586C80000000000400040000080C
:1040D000E000002040000020E034002042000020EA :1040D00000000008000008000000080000040008BC
:1040E00000000000000000000000000000000000D0 :1040E000000C081C3044586C8000000000040004E0
:1040F00000000000000000000000000000000000C0 :1040F00000000800000008000008000000080000A0
:104100000000000000000000002401400000024008 :10410000040008000C000000000000000001020391
:1041100001000000D63E0008DC3E0008C6E533B4CE :104110000406070809000000000102030403040666
:044120004927000823 :10412000080C101820305F6C697374006C6973742C
:1041300020616C6C20636F6D6D616E640000000027
:10414000A00100000100000020000000200000008D
:104150000034000020000000081C3044586C80002F
:10416000000000040004000008000000080000082F
:10417000000000080000040008000C081C3044582F
:104180006C8000000000040004000008000000082B
:10419000000008000000080000040008000C0000F7
:1041A000081C3044586C800000000004000400002B
:1041B00008000000080000080000000800000400DB
:1041C00008000C0000040050002000000000000067
:1041D000000000000000000000000000000400508B
:1041E00000100000000000000000000000000000BF
:1041F0000000000080807F7E7D7C7B7A79787776F6
:1042000076757473727171706F6E6E6D6C6C6B6AB3
:104210006A69686867666665646463636261616051
:10422000605F5F5E5E5D5D5C5C5B5B5A5A595958CE
:104230005857575656555555545453535252525138
:10424000515050504F4F4F4E4E4D4D4D4C4C4C4B8E
:104250004B4B4A4A4A4949494848484747474746D5
:104260004646454545444444444343434342424211
:10427000424141418182838485868788898B8C8DE8
:104280008E8F919293959697999A9C9D9FA0A2A3A9
:10429000A5A7A8AAACAEB0B2B3B5B7B9BCBEC0C2F0
:1042A000C5C7C9CCCED1D4D7D9DCDFE2E6E9ECF082
:1042B000F3F7FAFED442000800000020AC00000032
:1042C0000401000880430008AC000020B446000050
:1042D0002001000800002000000000000000000095
:1042E00000000000000000000000000000000000CE
:1042F00000000000000000000000000000000000BE
:1043000000000000000000000000000000000000AD
:104310000000000000000000493100083D320008A4
:10432000E000002040000020E03400204200002097
:10433000000000000000000000000000000000007D
:10434000000000000000000000000000000000006D
:10435000000000000000000000000000000000005D
:1043600000240140000002400100000000000000A5
:10437000264100082C410008C6E533B4492700084F
:04000005080000C12E :04000005080000C12E
:00000001FF :00000001FF

View File

@ -7,6 +7,7 @@
extern __IO app_t app; extern __IO app_t app;
extern motor_t *motor; extern motor_t *motor;
uint8_t detect_result = ST_DEV_NORMAL;
static struct flow fl_adc_inspection; // ADC static struct flow fl_adc_inspection; // ADC
static struct flow fl_systom_inspection; // 系统 static struct flow fl_systom_inspection; // 系统
@ -20,12 +21,16 @@ static uint8_t adc_inspection(struct flow *fl)
// 扭力 // 扭力
app.adc.torsion_in13.original_value = get_torsion_adc(); app.adc.torsion_in13.original_value = get_torsion_adc();
app.adc.torsion_in13.calibration_value = torsion_detect(); app.adc.torsion_in13.calibration_value = torsion_detect();
sensor_adc[GET_TORSION_VALUE] = S2B_UINT16(app.adc.torsion_in13.original_value);
// 压力 // 压力
app.adc.pressure_in7.original_value = get_pressure_adc(); app.adc.pressure_in7.original_value = get_pressure_adc();
app.adc.pressure_in7.calibration_value = pressure_detect(); app.adc.pressure_in7.calibration_value = pressure_detect();
sensor_adc[GET_PRESSURE_VALUE] = S2B_UINT16(app.adc.pressure_in7.original_value);
// 流量 // 流量
app.adc.pressure_in8.original_value = get_flow_adc(); app.adc.pressure_in8.original_value = get_flow_adc();
app.adc.pressure_in8.calibration_value = flow_detect(); app.adc.pressure_in8.calibration_value = flow_detect();
sensor_adc[GET_FLOW_VALUE] = S2B_UINT16(app.adc.pressure_in8.original_value);
FL_LOCK_DELAY(fl, FL_CLOCK_100MSEC); /* 延时100毫秒 */ FL_LOCK_DELAY(fl, FL_CLOCK_100MSEC); /* 延时100毫秒 */
} }
FL_TAIL(fl); FL_TAIL(fl);
@ -37,7 +42,7 @@ static uint8_t systom_inspection(struct flow *fl)
for (;;) for (;;)
{ {
host_rx_msg_deal(); host_rx_msg_deal();
FL_LOCK_DELAY(fl, FL_CLOCK_10MSEC); /* 延时100毫秒 */ FL_LOCK_DELAY(fl, FL_CLOCK_10MSEC); /* 延时10毫秒 */
} }
FL_TAIL(fl); FL_TAIL(fl);
} }
@ -47,8 +52,9 @@ static uint8_t idle_inspection(struct flow *fl)
FL_HEAD(fl); FL_HEAD(fl);
for (;;) for (;;)
{ {
test_process();
cpu_percent = scheduler_time_occupancy_get(1000); cpu_percent = scheduler_time_occupancy_get(1000);
FL_LOCK_DELAY(fl, FL_CLOCK_SEC); FL_LOCK_DELAY(fl, FL_CLOCK_10MSEC);
} }
FL_TAIL(fl); FL_TAIL(fl);
} }

View File

@ -2,11 +2,12 @@
#include "motor.h" #include "motor.h"
void motor_process(frame_msg_t *rx, frame_msg_t *bk); void motor_process(frame_msg_t *rx, frame_msg_t *bk);
void sensor_procss(frame_msg_t *rx, frame_msg_t *bk); void sensor_process(frame_msg_t *rx, frame_msg_t *bk);
void error_process(uint8_t err, frame_msg_t *rx, frame_msg_t *bk);
/************************************* 串口通讯 *************************************/ /************************************* 串口通讯 *************************************/
uart_t *uarts[UART_NUM_MAX]; uart_t *uarts[UART_NUM_MAX];
__IO static BOOL execute_state = 0; // 数据处理标志 __IO static BOOL execute_state = IDLE; // 数据处理标志
static frame_msg_t rx_msg; // 接收数据句柄 static frame_msg_t rx_msg; // 接收数据句柄
static frame_msg_t bk_msg; // 回复数据句柄 static frame_msg_t bk_msg; // 回复数据句柄
static uint8_t host_send_buffer[UART_TXSIZE] = {0}; // 数据发送缓存 static uint8_t host_send_buffer[UART_TXSIZE] = {0}; // 数据发送缓存
@ -70,12 +71,13 @@ static void host_cmd_execute(frame_msg_t *rx_msg, frame_msg_t *bk_msg)
switch (rx_msg->dev_no) switch (rx_msg->dev_no)
{ {
case ADC_SENSOR: case ADC_SENSOR:
sensor_procss(rx_msg, bk_msg); sensor_process(rx_msg, bk_msg);
break; break;
case MOTOR: case MOTOR:
motor_process(rx_msg, bk_msg); motor_process(rx_msg, bk_msg);
break; break;
default: default:
error_process(ST_CMD_IVALID, rx_msg, bk_msg);
break; break;
} }
} }
@ -107,7 +109,7 @@ static void host_data_encode(frame_msg_t *msg)
// 数据处理 // 数据处理
void host_rx_msg_deal(void) void host_rx_msg_deal(void)
{ {
if (execute_state == TRUE) if (execute_state == IDLE)
{ {
return; return;
} }
@ -160,6 +162,8 @@ static void host_uart_init(void)
motor_t *motor; motor_t *motor;
motor_ctrl_t *motor_param = NULL; motor_ctrl_t *motor_param = NULL;
extern uint8_t detect_result;
// 电机初始化 // 电机初始化
static void motor_init(void) static void motor_init(void)
{ {
@ -175,6 +179,40 @@ static void motor_init(void)
motor->handle.step_motor.interface.init(motor, dir, en, MIN_STEP_ANGLE, TIM21, LL_TIM_CHANNEL_CH2); motor->handle.step_motor.interface.init(motor, dir, en, MIN_STEP_ANGLE, TIM21, LL_TIM_CHANNEL_CH2);
} }
static uint8_t motor_param_get(frame_msg_t *rx, motor_ctrl_t *param)
{
uint8_t state = ST_DEV_NORMAL;
// 检查数据长度方向1个字节角度4个字节
if (rx->len < 5)
{
state = ST_CMD_IVALID;
return state;
}
// 方向
param->dir = rx->data[0];
// 角度
osel_memcpy((uint8_t *)&param->angle, (uint8_t *)&rx->data[1], 4);
param->angle = B2S_FLOAT32(param->angle);
return state;
}
static uint8_t motor_ctrl(uint8_t sw, motor_ctrl_t *param)
{
step_motor_t *step_motor = &motor->handle.step_motor;
uint8_t state = detect_result;
if (sw == RUN && detect_result == ST_DEV_NORMAL)
{
step_motor->interface.set_angle(motor, param->angle, (dir_e)param->dir);
}
else
{
step_motor->interface.stop(motor);
}
return state;
}
void motor_process_init(void) void motor_process_init(void)
{ {
motor_param = (motor_ctrl_t *)osel_mem_alloc(sizeof(motor_ctrl_t)); motor_param = (motor_ctrl_t *)osel_mem_alloc(sizeof(motor_ctrl_t));
@ -186,26 +224,47 @@ void motor_process_init(void)
void motor_process(frame_msg_t *rx, frame_msg_t *bk) void motor_process(frame_msg_t *rx, frame_msg_t *bk)
{ {
DBG_ASSERT(rx != NULL __DBG_LINE); DBG_ASSERT(rx != NULL __DBG_LINE);
DBG_ASSERT(bk != NULL __DBG_LINE);
// step_motor_t *step_motor = &motor->handle.step_motor; motor_ctrl_t *ctrl_param = motor_param;
// uint8_t state = ST_DEV_NORMAL; uint8_t state = ST_DEV_NORMAL;
switch (rx->cmd_no) switch (rx->cmd_no)
{ {
case SET_MOTOR_SPEED: // 设置电机转速 case SET_MOTOR_SPEED: // 设置电机转速
break; break;
case GET_MIN_STEP: // 获取最小步距
break;
case MOTOR_MOVE: // 运行电机 case MOTOR_MOVE: // 运行电机
{
// 读取参数
state = motor_param_get(rx, ctrl_param);
// 运行电机
if (state == ST_DEV_NORMAL)
{
state = motor_ctrl(RUN, ctrl_param);
}
// 回复数据
osel_memcpy((uint8_t *)bk, (uint8_t *)rx, sizeof(frame_msg_t));
bk->state = state;
break; break;
}
case MOTOR_STOP: // 停止电机 case MOTOR_STOP: // 停止电机
{
// 停止电机
state = motor_ctrl(STOP, ctrl_param);
// 回复数据
osel_memcpy((uint8_t *)bk, (uint8_t *)rx, sizeof(frame_msg_t));
bk->state = state;
break; break;
}
default: default:
error_process(ST_CMD_IVALID, rx, bk);
break; break;
} }
} }
/************************************* ADc传感器 *************************************/ /************************************* ADc传感器 *************************************/
uint16_t sensor_adc[GET_ALL_VALUE] = {0};
// AD传感器 // AD传感器
adc_t adc1 = { adc_t adc1 = {
.adc = ADC1, .adc = ADC1,
@ -267,45 +326,108 @@ float32 flow_detect(void)
return val; return val;
} }
// 获取扭力值 // 传感器任务
static void cmd_torsion_value(frame_msg_t *bk) void sensor_process(frame_msg_t *rx, frame_msg_t *bk)
{ {
DBG_ASSERT(rx != NULL __DBG_LINE);
DBG_ASSERT(bk != NULL __DBG_LINE);
uint8_t state = ST_DEV_NORMAL; uint8_t state = ST_DEV_NORMAL;
// 计算数据长度 // 检查指令合法性
uint8_t data_len = sizeof(uint16_t); if (rx->cmd_no > GET_ALL_VALUE)
// 采集 {
uint16_t value = get_torsion_adc(); state = ST_CMD_IVALID;
// TODO 检查数据合法性 goto encode;
}
encode:
// 回复数据 // 回复数据
bk->head = PACKET_STX; bk->head = PACKET_STX;
bk->state = state; bk->state = state;
bk->dev_no = ADC_SENSOR; bk->dev_no = rx->dev_no;
bk->cmd_no = GET_TORSION_VALUE; bk->cmd_no = rx->cmd_no;
bk->len = data_len; if (rx->cmd_no >= GET_ALL_VALUE)
value = S2B_UINT16(value); {
osel_memcpy((uint8_t *)bk->data, (uint8_t *)&value, data_len); bk->len = sizeof(uint16_t) * GET_ALL_VALUE;
osel_memcpy((uint8_t *)bk->data, (uint8_t *)&sensor_adc, bk->len);
}
else
{
bk->len = sizeof(uint16_t);
osel_memcpy((uint8_t *)bk->data, (uint8_t *)&sensor_adc[bk->cmd_no], bk->len);
}
} }
// 传感器任务 /************************************* 测试 *************************************/
void sensor_procss(frame_msg_t *rx, frame_msg_t *bk) #if SELF_TEST
test_t self_test = {TEST_DEV_IDEL, 0};
uint8_t test_buffer[UART_RXSIZE] = {0}; // 数据接收缓存
#endif
// 传感器测试指令
static uint8_t test_sensor_cmd(uint8_t cmd, uint8_t *buf)
{ {
switch (rx->cmd_no) uint8_t ver_len = 0;
uint8_t index = 0;
frame_msg_t msg;
msg.head = PACKET_STX;
msg.state = ST_DEV_NORMAL;
msg.dev_no = ADC_SENSOR;
msg.cmd_no = cmd;
msg.len = 0;
index = DATA_INDEX;
osel_memset(buf, 0, UART_RXSIZE);
osel_memcpy(buf, (uint8_t *)&msg, index);
buf[index] = xor_compute((uint8_t *)&buf[1], (index - 1));
index += 1;
buf[index] = PACKET_ETX;
index += 1;
ver_len = index;
return ver_len;
}
// 发送测试数据
static void test_rx_cb(uint8_t *data, uint8_t len)
{ {
case GET_TORSION_VALUE: // 获取扭力值 BOOL ret = FALSE;
cmd_torsion_value(bk);
// 数据有效性检查
ret = host_data_verify(data, len);
// 数据解码
if (ret == TRUE && execute_state == IDLE)
{
host_data_decode(data, len);
execute_state = BUSY;
}
}
// 测试任务
void test_process(void)
{
uint8_t len = 0;
uint8_t *buf = test_buffer;
if (self_test.dev_id >= TEST_DEV_MAX)
{
return;
}
switch (self_test.dev_id)
{
case TEST_DEV_SENSOR:
len = test_sensor_cmd(self_test.cmd_id, buf);
break; break;
case GET_PRESSURE_VALUE: case TEST_DEV_MOTOR:
break;
case GET_FLOW_VALUE:
break;
case GET_ALL_VALUE:
break; break;
default: default:
break; break;
} }
test_rx_cb(buf, len);
self_test.dev_id = TEST_DEV_IDEL;
} }
/************************************* 板卡 *************************************/ /************************************* 板卡 *************************************/
@ -320,3 +442,13 @@ void board_init(void)
host_uart_init(); // 串口初始化 host_uart_init(); // 串口初始化
ENABLE_TIM(TIM6); // 任务流程定时器使能 ENABLE_TIM(TIM6); // 任务流程定时器使能
} }
// 不支持的任务
void error_process(uint8_t err, frame_msg_t *rx, frame_msg_t *bk)
{
DBG_ASSERT(rx != NULL __DBG_LINE);
DBG_ASSERT(bk != NULL __DBG_LINE);
osel_memcpy((uint8_t *)bk, (uint8_t *)rx, sizeof(frame_msg_t));
bk->state = err;
}

View File

@ -4,6 +4,8 @@
#include "adcs.h" #include "adcs.h"
#include "uarts.h" #include "uarts.h"
#define SELF_TEST 1
// 串口协议参数 // 串口协议参数
#define UART_RXSIZE (240u) // 接收缓冲区 240个字节 #define UART_RXSIZE (240u) // 接收缓冲区 240个字节
#define UART_TXSIZE (240u) // 发送缓冲区 240个字节 #define UART_TXSIZE (240u) // 发送缓冲区 240个字节
@ -34,9 +36,9 @@ typedef enum
typedef enum typedef enum
{ {
ADC_SENSOR, STOP = 0, // 停止
MOTOR, RUN = 1, // 运行
} dev_id_e; } motor_state_e;
typedef enum typedef enum
{ {
@ -48,30 +50,48 @@ typedef enum
UART_NUM_MAX, UART_NUM_MAX,
} uart_num_e; } uart_num_e;
// 设备号
typedef enum typedef enum
{ {
SET_MOTOR_SPEED, ADC_SENSOR, // 传感器
GET_MIN_STEP, MOTOR, // 电机
GET_MOTOR_STATE, } dev_id_e;
MOTOR_MOVE,
MOTOR_STOP, // 电机命令号
typedef enum
{
SET_MOTOR_SPEED, // 设置电机速度
MOTOR_MOVE, // 电机启动参数1方向参数2角度
MOTOR_STOP, // 电机停止
} motor_cmd_e; } motor_cmd_e;
// 传感器命令号
typedef enum typedef enum
{ {
GET_TORSION_VALUE, GET_TORSION_VALUE, // 扭力
GET_PRESSURE_VALUE, GET_PRESSURE_VALUE, // 压力
GET_FLOW_VALUE, GET_FLOW_VALUE, // 流量
GET_ALL_VALUE, GET_ALL_VALUE, // 全部
} sensor_cmd_e; } sensor_cmd_e;
// 状态码
typedef enum typedef enum
{ {
ST_DEV_NORMAL, ST_DEV_NORMAL, // 正常
ST_DEV_BUSY, ST_DEV_BUSY, // 忙碌
ST_DEV_MISS, ST_DEV_MISS, // 故障
ST_CMD_IVALID, // 无效
} status_code_e; } status_code_e;
// 测试
typedef enum
{
TEST_DEV_IDEL,
TEST_DEV_SENSOR,
TEST_DEV_MOTOR,
TEST_DEV_MAX,
} test_dev_e;
typedef struct typedef struct
{ {
uint8_t head; // 包头 uint8_t head; // 包头
@ -88,6 +108,14 @@ typedef struct
float32 angle; float32 angle;
} motor_ctrl_t; } motor_ctrl_t;
typedef struct
{
uint8_t dev_id;
uint8_t cmd_id;
} test_t;
extern uint16_t sensor_adc[GET_ALL_VALUE];
extern void board_init(void); extern void board_init(void);
extern uint16_t get_torsion_adc(void); extern uint16_t get_torsion_adc(void);
extern float32 torsion_detect(void); extern float32 torsion_detect(void);
@ -97,5 +125,6 @@ extern uint16_t get_flow_adc(void);
extern float32 flow_detect(void); extern float32 flow_detect(void);
extern void host_rx_msg_deal(void); extern void host_rx_msg_deal(void);
extern void motor_process_init(void); extern void motor_process_init(void);
extern void test_process(void);
#endif // __BOARD_H__ #endif // __BOARD_H__

View File

@ -38,7 +38,7 @@ static void step_motor_stop(motor_t *motor)
} }
} }
static void step_motor_set_angle(motor_t *motor, uint32_t angle, dir_e dir) static void step_motor_set_angle(motor_t *motor, float32 angle, dir_e dir)
{ {
DBG_ASSERT(motor != NULL __DBG_LINE); DBG_ASSERT(motor != NULL __DBG_LINE);
step_motor_t *handle = &motor->handle.step_motor; step_motor_t *handle = &motor->handle.step_motor;

View File

@ -37,7 +37,7 @@ typedef struct
void (*init)(motor_t *motor, gpio_t dir, gpio_t en, float32 min_step_angle, TIM_TypeDef *pwm_timer, uint32_t pwm_channel); // 初始化 void (*init)(motor_t *motor, gpio_t dir, gpio_t en, float32 min_step_angle, TIM_TypeDef *pwm_timer, uint32_t pwm_channel); // 初始化
void (*run)(motor_t *motor, dir_e dir); // 运行 void (*run)(motor_t *motor, dir_e dir); // 运行
void (*stop)(motor_t *motor); // 停止 void (*stop)(motor_t *motor); // 停止
void (*set_angle)(motor_t *motor, uint32_t angle, dir_e dir); // 将角度转换成脉冲个数并运行 void (*set_angle)(motor_t *motor, float32 angle, dir_e dir); // 将角度转换成脉冲个数并运行
void (*stop_cb)(motor_t *motor); // 停止回调函数,在stop中执行 void (*stop_cb)(motor_t *motor); // 停止回调函数,在stop中执行
void (*set_speed)(motor_t *motor, uint32_t psc); void (*set_speed)(motor_t *motor, uint32_t psc);
} step_motor_interface_t; } step_motor_interface_t;