diff --git a/.vscode/settings.json b/.vscode/settings.json index faa9b76..4c5e84a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -5,7 +5,9 @@ "motor.h": "c", "main.h": "c", "app.h": "c", - "type_traits": "c" + "type_traits": "c", + "adcs.h": "c", + "uarts.h": "c" }, "C_Cpp.errorSquiggles": "disabled" } \ No newline at end of file diff --git a/MDK-ARM/motor.uvoptx b/MDK-ARM/motor.uvoptx index de29cce..4d573bd 100644 --- a/MDK-ARM/motor.uvoptx +++ b/MDK-ARM/motor.uvoptx @@ -158,44 +158,22 @@ 1 1 - motor_state + test_buffer,0x10 2 1 - motor_ccr - - - 3 - 1 - step_motor_flag - - - 4 - 1 - motor->handle.step_motor.attribute,0x0A - - - 5 - 1 - motor_dir - - - 6 - 1 - deal_done_flag,0x0A - - - 7 - 1 - uarts - - - 8 - 1 - uart + self_test,0x0A + + + 1 + 0 + 0x20000090 + 0 + + 0 @@ -238,16 +216,6 @@ - - - System Viewer\DMA1 - 35904 - - - System Viewer\USART1 - 35905 - - 1 0 @@ -508,7 +476,7 @@ User - 1 + 0 0 0 0 @@ -812,7 +780,7 @@ 9 41 1 - 0 + 1 0 0 ..\User\board\board.c diff --git a/MDK-ARM/motor/motor.hex b/MDK-ARM/motor/motor.hex index d21e664..94bd9ad 100644 --- a/MDK-ARM/motor/motor.hex +++ b/MDK-ARM/motor/motor.hex @@ -1,5 +1,5 @@ :020000040800F2 -:10000000704600209D01000895200008650D00083D +:10000000604700209D01000895200008650D00084C :1000100000000000000000000000000000000000E0 :100020000000000000000000000000003523000870 :100030000000000000000000EB210008372300084A @@ -14,21 +14,21 @@ :1000C00000F002F800F03EF80CA030C80838241800 :1000D0002D18A246671EAB4654465D46AC4201D180 :1000E00000F030F87E460F3E0FCCB6460126334274 -:1000F00000D0FB1AA246AB4633431847683F0000C6 -:10010000883F0000103A02D378C878C1FAD8520765 +:1000F00000D0FB1AA246AB4633431847B841000074 +:10010000D8410000103A02D378C878C1FAD8520713 :1001100001D330C830C101D504680C6070470000BD :100120000023002400250026103A01D378C1FBD813 :10013000520700D330C100D50B6070471FB51FBDFB :1001400010B510BD00F0BDFD1146FFF7F7FF02F03E -:1001500075FE00F0D5FD03B4FFF7F2FF03BC00F01D +:10015000A1FE00F0D5FD03B4FFF7F2FF03BC00F0F1 :10016000DBFD000070B505460C46164602E00FCCDC :100170000FC5103E102EFAD2082E02D303CC03C5B1 :10018000083E042E07D301CC01C5361F03E02178B9 :100190002970641C6D1C761EF9D270BD074880471B :1001A00007480047FEE7FEE7FEE7FEE7FEE7FEE75B :1001B00004480549054A064B704700007D240008A5 -:1001C000C1000008703C00207046002070400020F4 -:1001D0007040002001E004C0091F0429FBD28B07F6 +:1001C000C1000008603D0020604700206041002021 +:1001D0006041002001E004C0091F0429FBD28B0705 :1001E00001D50280801CC90700D002707047002929 :1001F0000BD0C30702D00270401C491E022904D351 :10020000830702D50280801C891EE3E70022EEE707 @@ -124,7 +124,7 @@ :1007A0004C00D4420AD15C00D4420BD04B4002D55D :1007B00092021143E2E749004908DFE75940C90FB7 :1007C000C90718E000200849D8E7054801420DD1C3 -:1007D0000342F7D0F2E700000000FF07483B0000AB +:1007D0000342F7D0F2E700000000FF07983D000059 :1007E0000000F07F0000E0FF0000F87F1148594052 :1007F0000143C01241400020C0E70123089A9B0634 :100800009A4205DC032252078918C90FC907B5E7C8 @@ -193,7 +193,7 @@ :100BF000AB42F9D84900A942F6D8AB4201D1A9428B :100C0000F2D0A94201D1002101E061004908D005DC :100C10000843F0BD1102090EFBD0FF200243D005AE -:100C2000F0BD0A460146104654E70000FE340000BD +:100C2000F0BD0A460146104654E700004E3700006A :100C30000000C07F0102C21504D00123DB07194365 :100C4000002A0ADB9E239A1A02D40846D040704735 :100C5000FF2241001206914201D900207047C017BF @@ -208,11 +208,11 @@ :100CE00000274908B6460026C0C5C0C5C0C5C0C556 :100CF000C0C5C0C5C0C5C0C5403D49008D46704790 :100D000010B50446C046C0462046FFF724FA10BD81 -:100D100000487047103C002001491820ABBEFEE798 +:100D100000487047003D002001491820ABBEFEE7A7 :100D20002600020070470000024600BF002A03D1DF :100D30000348018000BFFEE700BF012070470000AC -:100D4000C400002010B5024807C801F057FD10BDCF -:100D50008400002010B50249086802F087FC10BD2D +:100D4000D000002010B5024807C801F057FD10BDC3 +:100D50008C00002010B50249086802F0AFFD10BDFC :100D6000003A002000BFFEE770B504460D4600269D :100D7000204600F019F8002810D1A96868680843D7 :100D8000E9680843E168074A11400843E0602069C8 @@ -225,32 +225,32 @@ :100DF0003CC2FEFFC268920892000A43C26070477C :100E00008168024A1140091D81607047E8FFFF7F39 :100E100010B54A1E044B9A5C825853085B004A1E68 -:100E2000014CA25C835010BD2B3F000810B54A1E38 +:100E2000014CA25C835010BD7B41000810B54A1EE6 :100E3000044B9A5C825801231A434B1E014CE35C1D -:100E4000C25010BD2B3F000810B54A1E044B9A5CDF +:100E4000C25010BD7B41000810B54A1E044B9A5C8D :100E5000825802231A434B1E014CE35CC25010BD62 -:100E60002B3F000830B54B1E054CE35CC3580324F0 +:100E60007B41000830B54B1E054CE35CC35803249E :100E70002403A34313434C1E014D2C5D035130BD8D -:100E8000923E000830B54B1E064CE35C1B185B68B5 +:100E8000E240000830B54B1E064CE35C1B185B6863 :100E90001B0C1B0413434C1E024D2C5D2418636075 -:100EA00030BD00002B3F000830B54B1E054CE35C05 +:100EA00030BD00007B41000830B54B1E054CE35CB3 :100EB000C358054C234013434C1E024D2C5D035177 -:100EC00030BD0000923E0008EFBFFFFF10B54B1E83 -:100ED000024CE35C1B18DA6010BD00002B3F0008D9 +:100EC00030BD0000E2400008EFBFFFFF10B54B1E31 +:100ED000024CE35C1B18DA6010BD00007B41000887 :100EE00030B54B1E054CE35CC3588024A343134329 -:100EF0004C1E024D2C5D035130BD0000923E000897 +:100EF0004C1E024D2C5D035130BD0000E240000845 :100F000030B54B1E054CE35CC3580324A402A34335 -:100F100013434C1E014D2C5D035130BD923E000821 +:100F100013434C1E014D2C5D035130BDE2400008CF :100F200030B54B1E054CE35CC3582024A343134348 -:100F30004C1E024D2C5D035130BD0000923E000856 +:100F30004C1E024D2C5D035130BD0000E240000804 :100F400010B54B1E024CE35C1B189A6010BD0000EC -:100F50002B3F000830B54B1E054CE35CC3584024C2 +:100F50007B41000830B54B1E054CE35CC358402470 :100F6000A34313434C1E024D2C5D035130BD0000C2 -:100F7000923E000830B5A8231B584C1EA5000F2434 +:100F7000E240000830B5A8231B584C1EA5000F24E2 :100F8000AC40A3434C1EA5001446AC402343A82408 :100F9000235030BD30B54B1E054CE35CC3580324D1 :100FA0002402A34313434C1E014D2C5D035130BD5D -:100FB000923E0008024949688143014A51607047E6 +:100FB000E2400008024949688143014A5160704794 :100FC00000040140024909688143014A11607047E9 :100FD00000040140024949680143014A51607047D9 :100FE000000401400249C9680143014AD1607047C9 @@ -388,7 +388,7 @@ :1018200008400121090708430E49886000BF10499C :1018300010480068FEF7EEFC0A2148430546FEF713 :10184000E9FC044600E0641E002CFCD110B070BD21 -:101850000010024000080050800002404C3E00088A +:101850000010024000080050800002409C40000838 :10186000EFBFFFFF0024014008270140E8FFFF7F92 :10187000400D03000000002008B501200C49096B51 :1018800001430B4A11631146096B0140009100BFEF @@ -485,8 +485,8 @@ :101E30000B4AD1621146C96A0140019100BF00BF3F :101E40004003029002200390002004900590069029 :101E50000620079002A90748FFF73AF910B070BDB5 -:101E600000100240E703000000080140763E000831 -:101E70007D3E00080004005000B585B000200190B0 +:101E600000100240E703000000080140C6400008DF +:101E7000CD4000080004005000B585B0002001905E :101E800002900390049010201649896B0143154A73 :101E900091631146896B0140009100BF00BF002192 :101EA000112000F0C3FB112000F03CFB0E486946F6 @@ -543,12 +543,12 @@ :1021D000B0434E683603304304465560D361886887 :1021E000106400BF1462002070BD7047014600BF3C :1021F0000548C068F022104010400009034A125CF4 -:102200000846D0407047000000100240B53E00086C +:102200000846D04070470000001002400541000819 :10221000014600BF0548C068072212021040000AAC :10222000034A125C0846D04070470000001002408C -:10223000C53E0008014600BF0548C0680722D2021B +:1022300015410008014600BF0548C0680722D202C8 :102240001040C00A034A125C0846D04070470000A4 -:1022500000100240C53E000810B500BF1648C06817 +:10225000001002401541000810B500BF1648C068C4 :102260000C210840002806D004280CD0082812D0E1 :102270000C2816D111E0FFF769F8400B401C012132 :102280008140CC0315E0FFF74FF8002801D00B4C3C @@ -562,7 +562,7 @@ :10230000461C0748C0680F2189040840800C084912 :10231000085C604307463146FDF77CFFF8BD0000CE :102320000010024000093D000024F40000127A0071 -:10233000CD3E00087047704710B501204B49096831 +:102330001D4100087047704710B501204B490968DE :1023400081430143494A116000BF00BF00BF4748B5 :102350000068C007C00F0028F8D00120C00244491F :1023600009680322D20291430143414A116000BF30 @@ -584,12 +584,12 @@ :10246000044A4032D16000BF10BD0000002002408D :1024700000700040001002400048E8017047000072 :1024800010B50848FEF7BEFF00280AD006480068CD -:1024900001F010F800BF0120C0430249086100BFED +:1024900001F0D2F800BF0120C0430249086100BF2B :1024A00000BF10BD000801407C00002010B50A48A4 :1024B000FEF7A8FF00280DD000BF08480068401CA8 :1024C0000649086000BF00BF0120C04302490861FF :1024D00000BF00BF10BD00000010004060000020E1 -:1024E00010B50249086801F0D9F910BD003A002082 +:1024E00010B50249086801F001FB10BD003A002058 :1024F00030B47446641E2578641CAB4204D3635D1B :102500005B00E31830BC18471D46F8E7002805DBE0 :10251000C206D20E01219140014A116070470000AD @@ -627,10 +627,10 @@ :1027100010BD000000E100E01CED00E0EFF31080D0 :10272000704780F31088704701460846103000E07B :10273000001D0268002A03D1024A12689042F7D3B2 -:10274000704700002400002010B50648046803E02C +:10274000704700002800002010B50648046803E028 :102750002046FFF7E9FF0446034800688442F7D3A8 -:1027600010BD0000200000202400002010B5044609 -:102770002146002000F0E6FC10BD10B501E001701C +:1027600010BD0000240000202800002010B5044601 +:102770002146002000F084FD10BD10B501E001707D :10278000401C1346541EA2B2002BF8D110BD0FB44A :102790006A46908800990A690240824201D101226A :1027A00000E00022D0B204B070470FB46A469188AE @@ -660,387 +660,424 @@ :10292000DA6000BF029901984A1E2B469A5C8258D1 :1029300001231A434B1EEB5CC25000BF032C02D193 :102940000098FEF75DFAFEBD75000020E8FFFF7FEE -:10295000083F00082038002038B5044600200090C9 -:102960002068002802D01D2834D129E000BF00F0E3 -:10297000EBF81B49886000F0EFFD0546FEF75AF9B9 -:102980001749486000F0D9F81549486100F0F8FB94 -:102990000546FEF74FF91249086100F0C7F81049E3 -:1029A000086200F073F80546FEF744F90C49C86167 -:1029B00000BF0C480068606000BF1D20206000BFA1 -:1029C000084960680968081A0A2801D2002038BD41 -:1029D00000BFCCE70020206000900320F7E7000054 -:1029E000A00000206000002010B500F0F3FA00F015 -:1029F0007DF810BD10B500F087F810BD10B50020AF -:102A00000F49086000F002FB00F092FA0D4807C879 -:102A1000FFF736FF00F0B8F900BF00BF0A480068B2 -:102A2000012108430849086000BF00BF0846C0688C -:102A3000012108430449C86000BF00BF10BD000069 -:102A40007C0000208400002000100040F8B50446FF -:102A50000026022500F078F80090FF2020706670B4 -:102A60000020A070E070257168460088FF210902EF -:102A700008400112684600880002081881B20091DF -:102A80002A466946601D00F00DFAF8BDF8B500242D -:102A9000002500F04BF80646FEF710F904468B219E -:102AA000C9052046FEF716F806460C4901F00EF956 -:102AB00005460B49284601F061F90A490090FEF7E6 -:102AC00009F807468321C905FEF704F806460649BA -:102AD00001F0FCF805462846F8BD000000803B45A3 -:102AE00000001644000016430000964300200349EE -:102AF0000860034908600349086070470800002027 -:102B0000100000201800002010B50548FFF724FF32 -:102B1000044800F0FDFC044800F064F910BD00001A -:102B200008000020100000201800002010B504202C -:102B3000FFF78AFE0446204610BD10B50320FFF7BC -:102B400083FE0446204610BD10B50920FFF77CFE29 -:102B50000446204610BD0000F8B505460E4618276D -:102B60003946002000F0EEFA0446002C01D0012185 -:102B700000E0002108463621FEF7D6F82560A68041 -:102B80000448A0600448E060044820610448606193 -:102B90002046F8BDBB270008AB270008CB2700085C -:102BA0008F27000870B504460D46002C01D0012186 -:102BB00000E0002108464321FEF7B6F8002D01D0C1 -:102BC000012100E0002108464421FEF7ADF8A0787D -:102BD000002802D001280AD104E02946204600F04E -:102BE0001FFB05E02946204600F0D6F900E000BFB3 -:102BF00000BF70BDF8B504460F46002C01D001217E -:102C000000E0002108463721FEF78EF82579681D7F -:102C1000C6B232462146024800F044F9F8BD000031 -:102C2000143A0020F8B50646002E01D0012100E03C -:102C3000002108465621FEF777F8104C00270020A7 -:102C400000903079401DC5B22A463146204600F03A -:102C500029F97819C7B2681E81B2601C00F0E1FF43 -:102C6000E055781CC7B23C20E055A81CC0B20090CB -:102C70002046009900F07CF8F8BD00001E3B0020C3 -:102C8000FEB504460D4601200190002600270020D5 -:102C900000902078FF2806D16078002803D1681EB4 -:102CA000205C3C2803D0002001900198FEBD2079D3 -:102CB000C01DC6B2AE4203D0002001900198F5E7D6 -:102CC000A81E275CE81E81B2601C00F0AAFF0090DD -:102CD0000098874203D0002001900198E6E7019810 -:102CE000E4E70000F8B507460C46154600262946DD -:102CF0002046FFF7C5FF0646012E0AD10548007899 -:102D0000002806D129462046FFF774FF012001491B -:102D10000870F8BD7800002070B5114800780128CF -:102D200000D170BD0F4D104C21462846FFF73AFFE9 -:102D30002046FFF777FFF02200210C48FFF71DFD2A -:102D4000852200212846FFF718FD85220021204614 -:102D5000FFF713FD00200249087000BFE1E7000003 -:102D600078000020143A0020993A00201E3B0020F1 -:102D700070B504460D4603492A460868214600F00E -:102D8000DFFE70BD003A00200EB512480068002832 -:102D90001FD1F0210122104B0092019102900A46AE -:102DA00001210E4800F018FC0A490860002009685B -:102DB00008700B48074909688860032005490968BD -:102DC000C86002200349096808610249086800F0E8 -:102DD00037FE0EBD003A0020E52C00080038014007 -:102DE0000000024038B5044600200090206800280A -:102DF00002D0332819D10EE000BF7D20C00000F0C2 -:102E0000EFF90C49087000BF0B480068606000BF14 -:102E10003320206000BF084960680968081A6428E8 -:102E200001D2002038BD00BFE7E7002020600090FD -:102E30000320F7E7040000206000002008B501200F -:102E40001749496B0143164A51631146496B0140CA -:102E5000009100BF00BF00071146896B01439163D9 -:102E60001146896B0140009100BF00BF0321081F7C -:102E7000FFF764FBFFF760FAFEF71CFDFEF7FCFCB2 -:102E8000FEF7DAFBFFF734F8FEF7F6FFFEF742FF36 -:102E9000FFF7B4FDFFF7A8FD01E0FFF7ABFDFCE78E -:102EA0000010024010B503E00B780370491C401C71 -:102EB0001346541EA2B2002BF6D110BD70B50546C4 -:102EC00044263146002000F03DF90446002C01D094 -:102ED000012100E0002108466521FDF725FF20467D -:102EE0000021442201E00170401C1346561EB2B27C -:102EF000002BF8D100BF2570012D0AD10749E162EE -:102F000007492163074961630749A16307492164B0 -:102F100001E0002070BD00BF2046FBE74F320008F3 -:102F2000A332000863340008F73300086134000856 -:102F300010B598B00120FFF7C1FF134908601822AF -:102F4000124912A8FDF70EF91822104918310CA8E1 -:102F5000FDF708F910200E490E4A09920A910B90CC -:102F600018220CA903A8FDF7FDF815A807C86B46A1 -:102F700007C305480068C46A034812A90EC900685F -:102F8000A04718B010BD00007C000020743F00086E -:102F9000000801400AD7A33C70B504460D46002C3A -:102FA00001D0012100E000210846BC21FDF7BCFE54 -:102FB000E078002806D0012805D0032804D0042892 -:102FC00004D102E003E002E001E000E000BF00BF46 -:102FD00070BD000010B508242146002000F0B2F8B2 -:102FE000094908600968002901D0012100E0002199 -:102FF0000846B521FDF798FE082200210248006826 -:10300000FFF7BBFB10BD00008000002010B5044698 -:10301000A1000C4B59584A00A3000B49C858002185 -:1030200000F0A4F8A100094B5A58A300064908393A -:10303000C858002100F09AF80121034808300155D2 -:1030400010BD0000F03E000854000020003F0008C2 -:10305000F3B581B004460025002000902548005DAE -:10306000002804D123481838016820468847029870 -:10307000002801D1401EFEBDA0001F4A1158029831 -:10308000FDF7C8F80646A0001B4A11580298FDF744 -:10309000C1F8002900D0761CA00018490858451E28 -:1030A00022E0A1001348083840586900405A00281F -:1030B00003D10098401C009001E00020009000988F -:1030C000B04210D1002707E0A2000A480838805813 -:1030D000EA19520086527F1CB742F5D3A000064978 -:1030E00008586843C7E76D1E002DDADA0020C04398 -:1030F000C1E700005C000020F83E0008F03E000838 -:1031000070B504460026002508E0A1000B48405891 -:103110006900405A002800D0761C6D1CA0000849A8 -:103120000858A842F1D8A2000B469958642272436D -:103130001046FDF76FF8C0B270BD000054000020CB -:10314000F03E000870B504460E4631462046FFF7B3 -:103150007FFF0546681C002800D170BDA100024811 -:1031600040584019F9E700004C00002030B50346F4 -:1031700001E019705B1C1446521E002CF9D130BDC1 -:10318000F8B500240025FFF7D8FC0646FDF796FDAC -:1031900004468B21C9052046FDF79CFC06460C49D8 -:1031A00000F094FD05460B49284600F0E7FD0A496A -:1031B0000090FDF78FFC07468321C905FDF78AFCC7 -:1031C0000646064900F082FD05462846F8BD000087 -:1031D00000803B45000016440000164300007A447E -:1031E000F8B5044600252046FDF768FD06460A4866 -:1031F0000068FDF763FD07463146FDF76BFC0546A9 -:103200000020054908600549284600F05FFD064694 -:10321000FDF710FDF8BD0000700000200000C8425E -:1032200070B505460C46E878002806D0012808D07D -:10323000022807D0032807D105E02046FFF706FC47 -:1032400003E002E001E000E000BF00BF70BD0FB48A -:10325000F8B5044613ADE0CD002C01D0012100E00B -:10326000002108460621FDF75FFD6A46118C07988C -:10327000FFF772FC60606A46118F0D98FFF76CFCD7 -:10328000A060E6602761656100BFE068FEF770F846 -:103290002169E068FEF768F800BFF8BC08BC04B01C -:1032A0001847F3B585B00546002D01D0012100E097 -:1032B000002108461121FDF737FD2C1D002C01D0FF -:1032C000012100E0002108461321FDF72DFD06989D -:1032D000207601216176069800283ED12168086990 -:1032E00049690191009020680490206880680390EB -:1032F0000C21049841180A7813464A7812021343A5 -:103300008A7812041343C97809060B43082141182F -:103310000E7832464E78360232438E783604324387 -:10332000C97809060A430779394647793F02394384 -:1033300087793F043943C6793606314306463778E4 -:10334000384677783F023843B7783F043843F678F9 -:1033500036063043039EB0473DE02168086949695D -:1033600001910090206804902068C06803900C21AF -:10337000049841180A7813464A78120213438A784F -:1033800012041343C97809060B43082141180E782B -:1033900032464E78360232438E7836043243C9784C -:1033A00009060A430779394647793F023943877945 -:1033B0003F043943C67936063143064637783846E6 -:1033C00077783F023843B7783F043843F6783606BB -:1033D0003043039EB04700BFA0680168012211433B -:1033E000016000BFE168A068026A0A43026200BF90 -:1033F00000BF07B0F0BDFEB505460E461746002DCE -:1034000001D0012100E0002108462B21FDF78CFCB2 -:103410002C1D002C01D0012100E0002108462D21A7 -:10342000FDF782FC607E012800D1FEBD3046FDF72D -:1034300045FC00902169FDF74DFB0190FDF7FAFB7B -:10344000E06100216162E069002803D12846216B18 -:10345000884703E039462846E26A904700BFE4E720 -:10346000704770B50546002D01D0012100E0002114 -:1034700008461C21FDF758FC2C1D002C01D0012111 -:1034800000E0002108461E21FDF74EFC0021617678 -:103490006161E16100BFA068FDF76AFFE168A068B3 -:1034A000FDF762FF00BFA06B002802D02846A16B89 -:1034B000884770BD70B50546002D01D0012100E0A0 -:1034C000002108464C21FDF72FFC2C1D002C01D0BB -:1034D000012100E0002108464E21FDF725FCE069AE -:1034E000401EE061606A401C6062207E012803D1BA -:1034F000206A401C206202E0206A401E2062E069CF -:10350000002804D100BF00BF2846216B884770BD4A -:1035100038B50446002000902068002802D02828F2 -:1035200013D10AE000BFFFF7F7FB00BF09480068AE -:10353000606000BF2820206000BF064960680968FD -:10354000081A00D138BD00BFEDE7002020600090D0 -:103550000320F7E760000020F0B587B000240020CA -:103560000690FFF7F1FA0546FDF7A8FB04468B210C -:10357000C9052046FDF7AEFA0546114900F0A6FB45 -:1035800006901049069800F0F9FB0F490190FDF7ED -:10359000A1FA0746FDF774FA05460C4A0C4BFCF7F6 -:1035A00027FF00220B4B03910290FDF745F905918F -:1035B0000490FCF7DFFE0690069807B0F0BD00000F -:1035C00000803B450080BB440000CA426891ED7C0E -:1035D0003F35174000002440FFB581B00646154630 -:1035E0000B9F002E01D0012100E00021084684211C -:1035F000FDF79AFB3420FFF7B9F80446002C01D000 -:10360000012100E0002108468721FDF78DFB049889 -:10361000E062A5830C9820632785002D0DDD2846E8 -:10362000FFF7A4F8A061A169002901D0012100E001 -:10363000002108469621FDF777FB002F0DDD384667 -:10364000FFF794F86062616A002901D0012100E06F -:10365000002108469D21FDF767FB0298A0752021F7 -:103660000A9808556660204605B0F0BD70B504465E -:10367000002C01D0012100E000210846FF216B3120 -:10368000FDF752FB2169A068FDF7C2FB206903002A -:10369000FEF72EFF0873051423334353637300BFF3 -:1036A000A0680168022211404908002904D0A068DE -:1036B0000221416000BF00BF00BF5FE000BFA06803 -:1036C0000168202211404909002904D0A068202166 -:1036D000416000BF00BF00BF50E000BFA0680168AC -:1036E000012252021140490A002904D0A068114663 -:1036F000416000BF00BF00BF40E000BFA06801689C -:10370000012252031140490B002904D0A068114640 -:10371000416000BF00BF00BF30E000BFA06801688B -:10372000012252041140490C002904D0A06811461E -:10373000416000BF00BF00BF20E000BFA06801687B -:10374000012252051140490D002904D0A0681146FC -:10375000416000BF00BF00BF10E000BFA06801686B -:10376000012252061140490E002904D0A0681146DA -:10377000416000BF00BF00BF00E000BF00BF656840 -:1037800000BF00BFFEF7CAFF06460120FEF7C9FFD3 -:1037900028684021084328603046FEF7C2FF00BF7A -:1037A00000BF01212A20015520690300FEF7A0FE79 -:1037B0000873051423334353637300BFA068016883 -:1037C00008221140C908002904D0A06808214160DE -:1037D00000BF00BF00BF5FE000BFA068016880229B -:1037E0001140C909002904D0A0688021416000BFB0 -:1037F00000BF00BF50E000BFA06801680122D202F4 -:103800001140C90A002904D0A0681146416000BFD8 -:1038100000BF00BF40E000BFA06801680122D203E2 -:103820001140C90B002904D0A0681146416000BFB7 -:1038300000BF00BF30E000BFA06801680122D204D1 -:103840001140C90C002904D0A0681146416000BF96 -:1038500000BF00BF20E000BFA06801680122D205C0 -:103860001140C90D002904D0A0681146416000BF75 -:1038700000BF00BF10E000BFA06801680122D206AF -:103880001140C90E002904D0A0681146416000BF54 -:1038900000BF00BF00E000BF00BF70BD70B50446B0 -:1038A000002C01D0012100E000210846FF21243135 -:1038B000FDF73AFA606801682022114049090029A1 -:1038C0001BD06068C16911404909002915D06068A2 -:1038D000416AC9B2A28A501CA082A0698154A07D0D -:1038E000002851D1E06A002804D0A28A2078E36A37 -:1038F000A16998470020A08246E060680168102214 -:103900001140090900293FD06068C16911400909C7 -:10391000002939D0A07D012831D1E168A068FDF7E8 -:1039200077FAE168A0684A1E444B9A5C1218526804 -:10393000A08B801AA082E06A002817D0A08A0028F5 -:1039400014DDA08AA18B884210DCA28A2078E36A69 -:10395000A16998470021A28BA06901E00170401C79 -:103960001346551EAAB2002BF8D100BFA28BE16806 -:10397000A068FDF787FAE168A068FDF757FA002014 -:10398000A0826068FDF77AFD6068016840221140FE -:10399000890900290ED06068FDF728FE002809D0AB -:1039A000206B002801D0206B8047606840210162B5 -:1039B00000BF00BF60680168FF2201321140090AA0 -:1039C00000290DD06068C169C907C90F01225140A3 -:1039D0005140002904D060680121016200BF00BF8E -:1039E0006068FDF7F1FD002809D06068FDF7ECFD87 -:1039F000002804D060680221016200BF00BF606837 -:103A0000FDF7E8FD002809D06068FDF7E3FD002818 -:103A100004D060680421016200BF00BF6068FDF748 -:103A2000DFFD002809D06068FDF7DAFD002804D02A -:103A300060680821016200BF00BF70BD2B3F000815 -:103A400070B50446A07D002803D16068FDF722FD13 -:103A500075E06068FDF712FD6068FDF71BFD2169E8 -:103A6000A068FDF7D5F9E168A068FDF7D1F901215B -:103A70006068FDF706FD05462A46E168A068FDF787 -:103A80005FFAA269E168A068FDF720FAA28BE168FD -:103A9000A068FDF7F7F9E168A068FDF7D5F9E168DE -:103AA000A068FDF7C3F9656800BF00BFFEF736FEEA -:103AB00006460120FEF735FEA86840210843A860AD -:103AC0003046FEF72EFE00BF00BF656800BF00BF96 -:103AD000FEF724FE06460120FEF723FE286810218B -:103AE000084328603046FEF71CFE00BF00BF0021DF -:103AF0006068FDF7C6FC05462A462169A068FDF707 -:103B00001FFA626A2169A068FDF7E0F92169A068DF -:103B1000FDF79AF9656800BF00BFFEF7FFFD064696 -:103B20000120FEF7FEFDA86880210843A86030460A -:103B3000FEF7F7FD00BF00BF01212A20015570BD2F -:103B4000F8B504460D461646002C01D0012100E0D0 -:103B500000210846F321FDF7E7F8002D01D00121EF -:103B600000E000210846F421FDF7DEF8002E01DD1B -:103B7000012100E000210846F521FDF7D5F80027D6 -:103B80002020005D012823D12A20005D01281FD1BB -:103B900000212A2001552946606A009603E00A7830 -:103BA0000270491C401C009A531E9BB20093002ACD -:103BB000F5D100BF2169A068FDF72AF932462169D5 -:103BC000A068FDF75FF92169A068FDF72FF926E0ED -:103BD0000027002014E0002705E039467A1CD7B200 -:103BE000FE2900DBF8BD6168CA6980231A40D2094A -:103BF000002AF2D02A5C61688A6200BF411C88B248 -:103C0000B042E8DB002705E03846791CCFB2FE2839 -:103C100000DBE7E76068FDF7E9FC0028F4D000BFAF -:103C2000E0E730B5024614460020002304E0257882 -:103C30006840641C5D1CABB28B42F8DB30BD0000F9 -:103C400070B501250400ED074C4020D4441A01D280 -:103C5000001B0919C60D4B00F2B2FF2A29D01B0E1A -:103C60002CD000020C02D31A2C43DC402843051947 -:103C700010D2280A02D3401C6D0611D0761EF6051C -:103C80008019FF2A00DA70BDC00DC00570BD694003 -:103C900000F07AF801200543C541521C761CE8E784 -:103CA00064089C40C90161408900E7D10124A04318 -:103CB000E4E71B0E440200D0034870BD002AFCD18B -:103CC000C00FC00770BD00BF0000C07F70B54200CC -:103CD00064414B005C41120E39D01B0E38D0FF2AD4 -:103CE0003CD0FF2B3AD040024902400A490A060064 -:103CF00045184E43000A090AD2184843ED017F3A9D -:103D00000104731A4019190C4318990F04D00121AA -:103D10005B0849075B1A521CD80904D3401CF50301 -:103D200001D19D0607D0FF2A08D2D50506D0E407A9 -:103D30002043401970BD0125A843F4E7002A01DCA7 -:103D4000E00770BD2402FF202043C00570BD1B0E9C -:103D5000FF2A03D0FF2B01D0E00770BDFF264500EE -:103D60003606B54206D84D00B54203D8D218FF2A10 -:103D700000D0E7E7004870BD0000C07F70B50125A6 -:103D80000400ED074C4022D4441A02D26C40001BC0 -:103D90000919C60D4B00F2B2FF2A4BD01B0E50D0B2 -:103DA00000020C02D31A2C43DC40A843051B05D5A6 -:103DB000AD0019D36D08761E521E37D0F605280ABD -:103DC00001D2801970BD70416D0603D070BD69408D -:103DD000FFF73CFF9C4009026140490001D0401EB2 -:103DE00070BD0124A04370BD6D081DD001202B0CB7 -:103DF00001D12D0410302B0E01D12D0208302B0FD4 -:103E000001D12D01001DAB0F01D1AD00801CEB0FC6 -:103E100001D16D00401C6D00361A121A680AF505B2 -:103E20004019012A02DB70BD002070BDC036300A87 -:103E3000C00770BD1B0E440201D1FF2B00D1024808 -:103E400070BD002AF0D070BD0000C07F081C304457 -:103E5000586C80000000000400040000080000000E -:103E600008000008000000080000040008000C081A -:103E70001C3044586C80000000000400040000085E -:103E8000000000080000080000000800000400080E -:103E9000000C081C3044586C800000000004000432 -:103EA00000000800000008000008000000080000F2 -:103EB000040008000C0000000000000000010203E4 -:103EC00004060708090000000001020304030406B9 -:103ED000080C101820305F6C697374006C6973747F -:103EE00020616C6C20636F6D6D616E64000000007A -:103EF000A0010000010000002000000020000000E0 -:103F00000034000020000000081C3044586C800081 -:103F10000000000400040000080000000800000881 -:103F2000000000080000040008000C081C30445881 -:103F30006C8000000000040004000008000000087D -:103F4000000008000000080000040008000C000049 -:103F5000081C3044586C800000000004000400007D -:103F6000080000000800000800000008000004002D -:103F700008000C00000400500020000000000000B9 -:103F800000000000000000000000000000040050DD -:103F90000010000000000000000000000000000011 -:103FA0000000000080807F7E7D7C7B7A7978777648 -:103FB00076757473727171706F6E6E6D6C6C6B6A06 -:103FC0006A696868676666656464636362616160A4 -:103FD000605F5F5E5E5D5D5C5C5B5B5A5A59595821 -:103FE000585757565655555554545353525252518B -:103FF000515050504F4F4F4E4E4D4D4D4C4C4C4BE1 -:104000004B4B4A4A4A494949484848474747474627 -:104010004646454545444444444343434342424263 -:10402000424141418182838485868788898B8C8D3A -:104030008E8F919293959697999A9C9D9FA0A2A3FB -:10404000A5A7A8AAACAEB0B2B3B5B7B9BCBEC0C242 -:10405000C5C7C9CCCED1D4D7D9DCDFE2E6E9ECF0D4 -:10406000F3F7FAFE8440000800000020A0000000E2 -:104070000401000824410008A0000020D0450000F1 -:1040800020010008000020000000000000000000E7 -:104090000000000000000000000000000000000020 -:1040A0000000000000000000000000000000000010 -:1040B0000000000000000000000000000000000000 -:1040C00000000000000000000D3000080131000871 -:1040D000E000002040000020E034002042000020EA -:1040E00000000000000000000000000000000000D0 -:1040F00000000000000000000000000000000000C0 -:104100000000000000000000002401400000024008 -:1041100001000000D63E0008DC3E0008C6E533B4CE -:044120004927000823 +:10295000584100082038002038B504460020009077 +:102960002068002802D0222858D14DE000BF00F096 +:1029700011F92D49886000F017FF0546FEF75AF956 +:102980002949486008468068FF2109020840001272 +:1029900025498968090240182449088000F0F3F8A5 +:1029A0002149486100F08AFC0546FEF743F91E49BB +:1029B000086108464069FF210902084001121A48CF +:1029C0004069000208181949488000F0D5F81649F6 +:1029D000086200F081F80546FEF72CF91249C8613B +:1029E0000846006AFF210902084001120E48006AE9 +:1029F000000208180D49888000BF0D48006860601B +:102A000000BF2220206000BF094960680968081AD9 +:102A10000A2801D2002038BD00BFA8E700202060AE +:102A200000900320F7E70000AC00002084000020A5 +:102A30006000002010B500F06BFB00F07DF810BDC9 +:102A400010B500F087F810BD10B500200F490860E0 +:102A500000F07AFB00F0B6FA0D4807C8FFF710FF48 +:102A600000F0BEF900BF00BF0A480068012108431A +:102A70000849086000BF00BF0846C068012108433C +:102A80000449C86000BF00BF10BD00007C000020EA +:102A90008C0000200010004070B505460E4614461C +:102AA000002E01D0012100E000210846FF21C231A3 +:102AB000FEF73AF9002C01D0012100E00021084680 +:102AC000FF21C331FEF730F985223146204600F060 +:102AD00015FA657070BD0000F8B50024002500F0FF +:102AE0004BF80646FEF7EAF804468B21C905204656 +:102AF000FDF7F0FF06460C4901F010FA05460B49B8 +:102B0000284601F063FA0A490090FDF7E3FF074603 +:102B10008321C905FDF7DEFF0646064901F0FEF9EF +:102B200005462846F8BD000000803B4500001644DD +:102B30000000164300009643002003490860034943 +:102B400008600349086070470C0000201400002052 +:102B50001C00002010B50548FFF7FEFE044800F0F9 +:102B600099FD044800F06AF910BD00000C00002037 +:102B7000140000201C00002010B50420FFF764FEA4 +:102B80000446204610BD10B50320FFF75DFE044645 +:102B9000204610BD10B50920FFF756FE044620461A +:102BA00010BD0000F8B505460E461827394600202E +:102BB00000F066FB0446002C01D0012100E000215A +:102BC00008463621FEF7B0F82560A6800448A060CC +:102BD0000448E06004482061044860612046F8BD74 +:102BE000BB270008AB270008CB2700088F27000869 +:102BF00070B504460D46002C01D0012100E00021F3 +:102C000008464421FEF790F8002D01D0012100E094 +:102C1000002108464521FEF787F8A078002802D059 +:102C200001280AD104E02946204600F097FB0AE07B +:102C30002946204600F022FA05E02A4621460320D4 +:102C4000FFF72AFF00BF00BF70BD0000F8B50446C3 +:102C50000F46002C01D0012100E000210846382158 +:102C6000FEF762F82579681DC6B232462146024851 +:102C700000F044F9F8BD0000143A0020F8B506460B +:102C8000002E01D0012100E0002108465821FEF766 +:102C90004BF8104C0027002000903079401DC5B241 +:102CA0002A463146204600F029F97819C7B2681E35 +:102CB00081B2601C01F0DDF8E055781CC7B23C2001 +:102CC000E055A81CC0B200902046009900F07CF8A6 +:102CD000F8BD00001E3B0020FEB504460D46012055 +:102CE000019000260027002000902078FF2806D1C0 +:102CF0006078002803D1681E205C3C2803D00020A7 +:102D000001900198FEBD2079C01DC6B2AE4203D02D +:102D1000002001900198F5E7A81E275CE81E81B20B +:102D2000601C01F0A6F800900098874203D00020B4 +:102D300001900198E6E70198E4E70000F8B507463E +:102D40000C461546002629462046FFF7C5FF0646D5 +:102D5000012E0AD105480078002806D129462046D0 +:102D6000FFF774FF012001490870F8BD78000020CA +:102D700070B511480078002800D170BD0F4D104C7F +:102D800021462846FFF734FF2046FFF777FFF02261 +:102D900000210C48FFF7F1FC852200212846FFF7AF +:102DA000ECFC852200212046FFF7E7FC00200249C9 +:102DB000087000BFE1E7000078000020143A00200E +:102DC000993A00201E3B002070B504460D46034989 +:102DD0002A460868214600F0DBFF70BD003A00205B +:102DE0000EB51248006800281FD1F0210122104BB7 +:102DF0000092019102900A4601210E4800F014FD54 +:102E00000A4908600020096808700B4807490968EA +:102E10008860032005490968C860022003490968E1 +:102E200008610249086800F033FF0EBD003A002037 +:102E30003D2D0008003801400000024038B504462E +:102E4000002000902068002802D0392819D110E015 +:102E500000BF00F043FC7D20C00000F05FFA0B498A +:102E6000087000BF0A480068606000BF3920206019 +:102E700000BF074960680968081A00D138BD00BF63 +:102E8000E7E70020206000900320F7E7040000201F +:102E90006000002008B501201749496B0143164A1C +:102EA00051631146496B0140009100BF00BF00070C +:102EB0001146896B014391631146896B0140009172 +:102EC00000BF00BF0321081FFFF738FBFFF734FAEC +:102ED000FEF7F0FCFEF7D0FCFEF7AEFBFFF708F8BC +:102EE000FEF7CAFFFEF716FFFFF7AEFDFFF7A2FDE4 +:102EF00001E0FFF7A5FDFCE70010024010B503E07C +:102F00000B780370491C401C1346541EA2B2002BC0 +:102F1000F6D110BD70B5054644263146002000F0BC +:102F2000AFF90446002C01D0012100E00021084641 +:102F30006521FDF7F9FE20460021442201E00170E1 +:102F4000401C1346561EB2B2002BF8D100BF2570AC +:102F5000012D0AD10749E1620749216307496163ED +:102F60000749A1630749216401E0002070BD00BF4B +:102F70002046FBE7D93300082D340008E735000868 +:102F800081350008E5350008F8B505460C460B48C4 +:102F90000068061D0A480778012D09D1007800282D +:102FA00006D1227861680548736B0068984703E092 +:102FB0000248316B006888473846F8BD7C00002025 +:102FC0000800002010B598B00120FFF7A3FF1349B7 +:102FD00008601822124912A8FDF7C4F818221049F7 +:102FE00018310CA8FDF7BEF810200E490E4A0992C0 +:102FF0000A910B9018220CA903A8FDF7B3F815A8A5 +:1030000007C86B4607C305480068C46A034812A98D +:103010000EC90068A04718B010BD00007C00002059 +:10302000C4410008000801400AD7A33CF8B5054692 +:103030000C4600262879052802DA03263046F8BD1A +:10304000687920700422A91D201DFFF757FF6068D2 +:10305000009000990A0EFF231B041940090A521818 +:103060001B120099194009025118009A120689187A +:103070000091009961603046E1E70000F8B505462F +:103080000C46002D01D0012100E000210846E2217C +:10309000FDF74AFE002C01D0012100E00021084686 +:1030A000E321FDF741FE194807680026E87800286B +:1030B00004D0012803D0022820D113E024E03946AF +:1030C0002846FFF7B3FF0646002E04D139460120FB +:1030D000FFF75AFF0646852229462046FFF70EFFD6 +:1030E000667011E039460020FFF74EFF0646852244 +:1030F00029462046FFF702FF667005E02246294672 +:103100000320FFF7C9FC00BF00BFF8BD800000200E +:1031100010B508242146002000F0B2F809490860E3 +:103120000968002901D0012100E000210846DB21C7 +:10313000FDF7FAFD0822002102480068FFF71DFB99 +:1031400010BD00008000002010B50446A1000C4B0B +:1031500059584A00A3000B49C858002100F0A4F8B0 +:10316000A100094B5A58A30006490839C858002144 +:1031700000F09AF8012103480830015510BD000005 +:10318000404100085400002050410008F3B581B0D0 +:1031900004460025002000902548005D002804D149 +:1031A000234818380168204688470298002801D132 +:1031B000401EFEBDA0001F4A11580298FDF72AF8D4 +:1031C0000646A0001B4A11580298FDF723F8002973 +:1031D00000D0761CA00018490858451E22E0A10026 +:1031E0001348083840586900405A002803D1009815 +:1031F000401C009001E0002000900098B04210D1E7 +:10320000002707E0A2000A4808388058EA1952004F +:1032100086527F1CB742F5D3A00006490858684380 +:10322000C7E76D1E002DDADA0020C043C1E70000B9 +:103230005C000020484100084041000870B5044689 +:103240000026002508E0A1000B4840586900405ABC +:10325000002800D0761C6D1CA00008490858A84220 +:10326000F1D8A2000B469958642272431046FCF72D +:10327000D1FFC0B270BD00005400002040410008E2 +:1032800070B504460E4631462046FFF77FFF0546DF +:10329000681C002800D170BDA100024840584019A8 +:1032A000F9E700004C00002030B5034601E019703A +:1032B0005B1C1446521E002CF9D130BDF8B5002419 +:1032C0000025FFF760FC0646FDF7F8FC04468B215D +:1032D000C9052046FDF7FEFB06460C4900F01EFE20 +:1032E00005460B49284600F071FE0A490090FDF79B +:1032F000F1FB07468321C905FDF7ECFB06460649AD +:1033000000F00CFE05462846F8BD000000803B4555 +:10331000000016440000164300007A44F8B5044645 +:1033200000252046FDF7CAFC06460A480068FDF75E +:10333000C5FC07463146FDF7CDFB05460020054993 +:1033400008600549284600F0E9FD0646FDF772FCD5 +:10335000F8BD0000700000200000C84270B50546AE +:103360000C46002D01D0012100E000210846FF217C +:103370004D31FDF7D9FC002C01D0012100E00021E6 +:103380000846FF214E31FDF7CFFC0026E8780328E0 +:1033900001DD032600E000BFFF2020706670A878E2 +:1033A000A070E878E070E878032807DB0620207139 +:1033B00022790849601DFFF7A1FD09E00220207174 +:1033C0002279E0784000034BC118601DFFF796FD9D +:1033D00070BD0000840000200FB4F8B5044613ADA2 +:1033E000E0CD002C01D0012100E00021084606219B +:1033F000FDF79AFC6A46118C0798FFF7D3FB6060D3 +:103400006A46118F0D98FFF7CDFBA060E66027613B +:10341000656100BFE068FDF7ABFF2169E068FDF77B +:10342000A3FF00BFF8BC08BC04B01847F3B585B0D3 +:103430000546002D01D0012100E0002108461121A0 +:10344000FDF772FC2C1D002C01D0012100E00021B1 +:1034500008461321FDF768FC069820760121617665 +:10346000069800283ED121680869496901910090B9 +:10347000206804902068806803900C21049841180B +:103480000A7813464A78120213438A7812041343C7 +:10349000C97809060B43082141180E7832464E7848 +:1034A000360232438E7836043243C97809060A431D +:1034B0000779394647793F02394387793F043943D1 +:1034C000C6793606314306463778384677783F0264 +:1034D0003843B7783F043843F67836063043039EC6 +:1034E000B0473DE021680869496901910090206872 +:1034F00004902068C06803900C21049841180A7851 +:1035000013464A78120213438A7812041343C97887 +:1035100009060B43082141180E7832464E783602D0 +:1035200032438E7836043243C97809060A43077954 +:10353000394647793F02394387793F043943C67991 +:103540003606314306463778384677783F023843A7 +:10355000B7783F043843F67836063043039EB047C9 +:1035600000BFA068016801221143016000BFE1684B +:10357000A068026A0A43026200BF00BF07B0F0BD44 +:10358000F8B505460E461746002D01D0012100E092 +:10359000002108462B21FDF7C7FB2C1D002C01D074 +:1035A000012100E0002108462D21FDF7BDFB607ED2 +:1035B000012800D1F8BD30462169FDF78BFA009053 +:1035C000FDF738FBE06100216162E069002803D16A +:1035D0002846216B884703E039462846E26A90472F +:1035E00000BFE7E7704770B50546002D01D0012107 +:1035F00000E0002108461C21FDF796FB2C1D002C45 +:1036000001D0012100E0002108461E21FDF78CFBBE +:10361000002161766161E16100BFA068FDF7A8FE4D +:10362000E168A068FDF7A0FE00BFA06B002802D0F3 +:103630002846A16B884770BD70B50546002D01D0A6 +:10364000012100E0002108464C21FDF76DFB2C1DF7 +:10365000002C01D0012100E0002108464E21FDF799 +:1036600063FBE069401EE061606A401C6062207E8E +:10367000012803D1206A401C206202E0206A401E1B +:103680002062E069002804D100BF00BF2846216BFA +:10369000884770BD38B50446002000902068002897 +:1036A00002D02D2813D10AE000BFFFF761FB00BF55 +:1036B00009480068606000BF2D20206000BF0649F7 +:1036C00060680968081A00D138BD00BFEDE7002026 +:1036D000206000900320F7E76000002070B500250F +:1036E0000F4C10480078032800DB70BD0D480078AF +:1036F000012802D0022808D106E00A49487821466C +:1037000000F02CF8054601E000E000BF00BF2946AC +:10371000204600F009F800200249087000BFE4E7E5 +:103720000E3C00209800002070B504460D4600268F +:1037300029462046FFF7D0FA0646012E0AD1064850 +:103740000078002806D129462046FFF77FFA01209D +:103750000149087070BD000078000020F0B5A3B0EA +:1037600006460D4600270024FF216846017100210E +:1037700041718171C67101720524F0222846FEF75D +:10378000FCFF224601A92846FFF7B8FB601E81B264 +:10379000681C00F06EFB2855641C3C202855641CF6 +:1037A0002746384623B0F0BDF0B587B0002400208E +:1037B0000690FFF7EFF90546FDF780FA04468B21E6 +:1037C000C9052046FDF786F90546114900F0A6FB1C +:1037D00006901049069800F0F9FB0F490190FDF79B +:1037E00079F90746FDF74CF905460C4A0C4BFCF7F6 +:1037F000FFFD00220B4B03910290FDF71DF8059190 +:103800000490FCF7B7FD0690069807B0F0BD0000E5 +:1038100000803B450080BB440000CA426891ED7CBB +:103820003F35174000002440FFB581B006461546DD +:103830000B9F002E01D0012100E0002108468421C9 +:10384000FDF772FA3420FEF791FF0446002C01D0F8 +:10385000012100E0002108468721FDF765FA049860 +:10386000E062A5830C9820632785002D0DDD284696 +:10387000FEF77CFFA061A169002901D0012100E0D1 +:10388000002108469621FDF74FFA002F0DDD38463E +:10389000FEF76CFF6062616A002901D0012100E03F +:1038A000002108469D21FDF73FFA0298A0752021CE +:1038B0000A9808556660204605B0F0BD70B504460C +:1038C000002C01D0012100E000210846FF216B31CE +:1038D000FDF72AFA2169A068FDF79AFA206903002A +:1038E000FEF706FE0873051423334353637300BFCA +:1038F000A0680168022211404908002904D0A0688C +:103900000221416000BF00BF00BF5FE000BFA068B0 +:103910000168202211404909002904D0A068202113 +:10392000416000BF00BF00BF50E000BFA068016859 +:10393000012252021140490A002904D0A068114610 +:10394000416000BF00BF00BF40E000BFA068016849 +:10395000012252031140490B002904D0A0681146EE +:10396000416000BF00BF00BF30E000BFA068016839 +:10397000012252041140490C002904D0A0681146CC +:10398000416000BF00BF00BF20E000BFA068016829 +:10399000012252051140490D002904D0A0681146AA +:1039A000416000BF00BF00BF10E000BFA068016819 +:1039B000012252061140490E002904D0A068114688 +:1039C000416000BF00BF00BF00E000BF00BF6568EE +:1039D00000BF00BFFEF7A2FE06460120FEF7A1FED3 +:1039E00028684021084328603046FEF79AFE00BF51 +:1039F00000BF01212A20015520690300FEF778FD50 +:103A00000873051423334353637300BFA068016830 +:103A100008221140C908002904D0A068082141608B +:103A200000BF00BF00BF5FE000BFA0680168802248 +:103A30001140C909002904D0A0688021416000BF5D +:103A400000BF00BF50E000BFA06801680122D202A1 +:103A50001140C90A002904D0A0681146416000BF86 +:103A600000BF00BF40E000BFA06801680122D20390 +:103A70001140C90B002904D0A0681146416000BF65 +:103A800000BF00BF30E000BFA06801680122D2047F +:103A90001140C90C002904D0A0681146416000BF44 +:103AA00000BF00BF20E000BFA06801680122D2056E +:103AB0001140C90D002904D0A0681146416000BF23 +:103AC00000BF00BF10E000BFA06801680122D2065D +:103AD0001140C90E002904D0A0681146416000BF02 +:103AE00000BF00BF00E000BF00BF70BD70B504465E +:103AF000002C01D0012100E000210846FF212431E3 +:103B0000FDF712F960680168202211404909002977 +:103B10001BD06068C16911404909002915D060684F +:103B2000416AC9B2A28A501CA082A0698154A07DBA +:103B3000002851D1E06A002804D0A28A2078E36AE4 +:103B4000A16998470020A08246E0606801681022C1 +:103B50001140090900293FD06068C1691140090975 +:103B6000002939D0A07D012831D1E168A068FDF796 +:103B70004FF9E168A0684A1E444B9A5C12185268DB +:103B8000A08B801AA082E06A002817D0A08A0028A3 +:103B900014DDA08AA18B884210DCA28A2078E36A17 +:103BA000A16998470021A28BA06901E00170401C27 +:103BB0001346551EAAB2002BF8D100BFA28BE168B4 +:103BC000A068FDF75FF9E168A068FDF72FF9002014 +:103BD000A0826068FDF752FC6068016840221140D5 +:103BE000890900290ED06068FDF700FD002809D082 +:103BF000206B002801D0206B804760684021016263 +:103C000000BF00BF60680168FF2201321140090A4D +:103C100000290DD06068C169C907C90F0122514050 +:103C20005140002904D060680121016200BF00BF3B +:103C30006068FDF7C9FC002809D06068FDF7C4FC86 +:103C4000002804D060680221016200BF00BF6068E4 +:103C5000FDF7C0FC002809D06068FDF7BBFC002818 +:103C600004D060680421016200BF00BF6068FDF7F6 +:103C7000B7FC002809D06068FDF7B2FC002804D02A +:103C800060680821016200BF00BF70BD7B41000871 +:103C900070B50446A07D002803D16068FDF7FAFBEB +:103CA00075E06068FDF7EAFB6068FDF7F3FB2169EA +:103CB000A068FDF7ADF8E168A068FDF7A9F801215B +:103CC0006068FDF7DEFB05462A46E168A068FDF75F +:103CD00037F9A269E168A068FDF7F8F8A28BE168FE +:103CE000A068FDF7CFF8E168A068FDF7ADF8E168DE +:103CF000A068FDF79BF8656800BF00BFFEF70EFDEA +:103D000006460120FEF70DFDA86840210843A86083 +:103D10003046FEF706FD00BF00BF656800BF00BF6C +:103D2000FEF7FCFC06460120FEF7FBFC286810218C +:103D3000084328603046FEF7F4FC00BF00BF0021B6 +:103D40006068FDF79EFB05462A462169A068FDF7DD +:103D5000F7F8626A2169A068FDF7B8F82169A068E0 +:103D6000FDF772F8656800BF00BFFEF7D7FC064696 +:103D70000120FEF7D6FCA86880210843A8603046E1 +:103D8000FEF7CFFC00BF00BF01212A20015570BD06 +:103D9000F8B504460D461646002C01D0012100E07E +:103DA00000210846F321FCF7BFFF002D01D00121BF +:103DB00000E000210846F421FCF7B6FF002E01DDEB +:103DC000012100E000210846F521FCF7ADFF0027A6 +:103DD0002020005D012823D12A20005D01281FD169 +:103DE00000212A2001552946606A009603E00A78DE +:103DF0000270491C401C009A531E9BB20093002A7B +:103E0000F5D100BF2169A068FDF702F832462169AB +:103E1000A068FDF737F82169A068FDF707F826E0EC +:103E20000027002014E0002705E039467A1CD7B2AD +:103E3000FE2900DBF8BD6168CA6980231A40D209F7 +:103E4000002AF2D02A5C61688A6200BF411C88B2F5 +:103E5000B042E8DB002705E03846791CCFB2FE28E7 +:103E600000DBE7E76068FDF7C1FB0028F4D000BF86 +:103E7000E0E730B5024614460020002304E0257830 +:103E80006840641C5D1CABB28B42F8DB30BD0000A7 +:103E900070B501250400ED074C4020D4441A01D22E +:103EA000001B0919C60D4B00F2B2FF2A29D01B0EC8 +:103EB0002CD000020C02D31A2C43DC4028430519F5 +:103EC00010D2280A02D3401C6D0611D0761EF605CA +:103ED0008019FF2A00DA70BDC00DC00570BD6940B1 +:103EE00000F07AF801200543C541521C761CE8E732 +:103EF00064089C40C90161408900E7D10124A043C6 +:103F0000E4E71B0E440200D0034870BD002AFCD138 +:103F1000C00FC00770BD00BF0000C07F70B5420079 +:103F200064414B005C41120E39D01B0E38D0FF2A81 +:103F30003CD0FF2B3AD040024902400A490A060011 +:103F400045184E43000A090AD2184843ED017F3A4A +:103F50000104731A4019190C4318990F04D0012158 +:103F60005B0849075B1A521CD80904D3401CF503AF +:103F700001D19D0607D0FF2A08D2D50506D0E40757 +:103F80002043401970BD0125A843F4E7002A01DC55 +:103F9000E00770BD2402FF202043C00570BD1B0E4A +:103FA000FF2A03D0FF2B01D0E00770BDFF2645009C +:103FB0003606B54206D84D00B54203D8D218FF2ABE +:103FC00000D0E7E7004870BD0000C07F70B5012554 +:103FD0000400ED074C4022D4441A02D26C40001B6E +:103FE0000919C60D4B00F2B2FF2A4BD01B0E50D060 +:103FF00000020C02D31A2C43DC40A843051B05D554 +:10400000AD0019D36D08761E521E37D0F605280A6A +:1040100001D2801970BD70416D0603D070BD69403A +:10402000FFF73CFF9C4009026140490001D0401E5F +:1040300070BD0124A04370BD6D081DD001202B0C64 +:1040400001D12D0410302B0E01D12D0208302B0F81 +:1040500001D12D01001DAB0F01D1AD00801CEB0F74 +:1040600001D16D00401C6D00361A121A680AF50560 +:104070004019012A02DB70BD002070BDC036300A35 +:10408000C00770BD1B0E440201D1FF2B00D10248B6 +:1040900070BD002AF0D070BD0000C07F081C304405 +:1040A000586C8000000000040004000008000000BC +:1040B00008000008000000080000040008000C08C8 +:1040C0001C3044586C80000000000400040000080C +:1040D00000000008000008000000080000040008BC +:1040E000000C081C3044586C8000000000040004E0 +:1040F00000000800000008000008000000080000A0 +:10410000040008000C000000000000000001020391 +:104110000406070809000000000102030403040666 +: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 :00000001FF diff --git a/User/app_flow.c b/User/app_flow.c index 63de744..c31fe7c 100644 --- a/User/app_flow.c +++ b/User/app_flow.c @@ -7,6 +7,7 @@ extern __IO app_t app; extern motor_t *motor; +uint8_t detect_result = ST_DEV_NORMAL; static struct flow fl_adc_inspection; // ADC 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.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.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.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_TAIL(fl); @@ -37,7 +42,7 @@ static uint8_t systom_inspection(struct flow *fl) for (;;) { host_rx_msg_deal(); - FL_LOCK_DELAY(fl, FL_CLOCK_10MSEC); /* 延时100毫秒 */ + FL_LOCK_DELAY(fl, FL_CLOCK_10MSEC); /* 延时10毫秒 */ } FL_TAIL(fl); } @@ -47,8 +52,9 @@ static uint8_t idle_inspection(struct flow *fl) FL_HEAD(fl); for (;;) { + test_process(); cpu_percent = scheduler_time_occupancy_get(1000); - FL_LOCK_DELAY(fl, FL_CLOCK_SEC); + FL_LOCK_DELAY(fl, FL_CLOCK_10MSEC); } FL_TAIL(fl); } diff --git a/User/board/board.c b/User/board/board.c index 3768b00..37d39af 100644 --- a/User/board/board.c +++ b/User/board/board.c @@ -2,11 +2,12 @@ #include "motor.h" 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]; -__IO static BOOL execute_state = 0; // 数据处理标志 +__IO static BOOL execute_state = IDLE; // 数据处理标志 static frame_msg_t rx_msg; // 接收数据句柄 static frame_msg_t bk_msg; // 回复数据句柄 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) { case ADC_SENSOR: - sensor_procss(rx_msg, bk_msg); + sensor_process(rx_msg, bk_msg); break; case MOTOR: motor_process(rx_msg, bk_msg); break; default: + error_process(ST_CMD_IVALID, rx_msg, bk_msg); break; } } @@ -107,7 +109,7 @@ static void host_data_encode(frame_msg_t *msg) // 数据处理 void host_rx_msg_deal(void) { - if (execute_state == TRUE) + if (execute_state == IDLE) { return; } @@ -160,6 +162,8 @@ static void host_uart_init(void) motor_t *motor; motor_ctrl_t *motor_param = NULL; +extern uint8_t detect_result; + // 电机初始化 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); } +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 *)¶m->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) { 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) { DBG_ASSERT(rx != NULL __DBG_LINE); + DBG_ASSERT(bk != NULL __DBG_LINE); - // step_motor_t *step_motor = &motor->handle.step_motor; - // uint8_t state = ST_DEV_NORMAL; + motor_ctrl_t *ctrl_param = motor_param; + uint8_t state = ST_DEV_NORMAL; switch (rx->cmd_no) { case SET_MOTOR_SPEED: // 设置电机转速 break; - case GET_MIN_STEP: // 获取最小步距 - break; 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; + } 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; + } default: + error_process(ST_CMD_IVALID, rx, bk); break; } } /************************************* ADc传感器 *************************************/ +uint16_t sensor_adc[GET_ALL_VALUE] = {0}; + // AD传感器 adc_t adc1 = { .adc = ADC1, @@ -267,45 +326,108 @@ float32 flow_detect(void) 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 data_len = sizeof(uint16_t); - // 采集 - uint16_t value = get_torsion_adc(); - // TODO 检查数据合法性 + // 检查指令合法性 + if (rx->cmd_no > GET_ALL_VALUE) + { + state = ST_CMD_IVALID; + goto encode; + } +encode: // 回复数据 bk->head = PACKET_STX; bk->state = state; - bk->dev_no = ADC_SENSOR; - bk->cmd_no = GET_TORSION_VALUE; - bk->len = data_len; - value = S2B_UINT16(value); - osel_memcpy((uint8_t *)bk->data, (uint8_t *)&value, data_len); + bk->dev_no = rx->dev_no; + bk->cmd_no = rx->cmd_no; + if (rx->cmd_no >= GET_ALL_VALUE) + { + 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) +{ + BOOL ret = FALSE; + + // 数据有效性检查 + ret = host_data_verify(data, len); + // 数据解码 + if (ret == TRUE && execute_state == IDLE) { - case GET_TORSION_VALUE: // 获取扭力值 - cmd_torsion_value(bk); + 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; - case GET_PRESSURE_VALUE: - break; - case GET_FLOW_VALUE: - break; - case GET_ALL_VALUE: + case TEST_DEV_MOTOR: break; default: break; } + + test_rx_cb(buf, len); + self_test.dev_id = TEST_DEV_IDEL; } /************************************* 板卡 *************************************/ @@ -320,3 +442,13 @@ void board_init(void) host_uart_init(); // 串口初始化 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; +} diff --git a/User/board/board.h b/User/board/board.h index 5de2638..d878daa 100644 --- a/User/board/board.h +++ b/User/board/board.h @@ -4,6 +4,8 @@ #include "adcs.h" #include "uarts.h" +#define SELF_TEST 1 + // 串口协议参数 #define UART_RXSIZE (240u) // 接收缓冲区 240个字节 #define UART_TXSIZE (240u) // 发送缓冲区 240个字节 @@ -34,9 +36,9 @@ typedef enum typedef enum { - ADC_SENSOR, - MOTOR, -} dev_id_e; + STOP = 0, // 停止 + RUN = 1, // 运行 +} motor_state_e; typedef enum { @@ -48,30 +50,48 @@ typedef enum UART_NUM_MAX, } uart_num_e; +// 设备号 typedef enum { - SET_MOTOR_SPEED, - GET_MIN_STEP, - GET_MOTOR_STATE, - MOTOR_MOVE, - MOTOR_STOP, + ADC_SENSOR, // 传感器 + MOTOR, // 电机 +} dev_id_e; + +// 电机命令号 +typedef enum +{ + SET_MOTOR_SPEED, // 设置电机速度 + MOTOR_MOVE, // 电机启动(参数1:方向,参数2:角度) + MOTOR_STOP, // 电机停止 } motor_cmd_e; +// 传感器命令号 typedef enum { - GET_TORSION_VALUE, - GET_PRESSURE_VALUE, - GET_FLOW_VALUE, - GET_ALL_VALUE, + GET_TORSION_VALUE, // 扭力 + GET_PRESSURE_VALUE, // 压力 + GET_FLOW_VALUE, // 流量 + GET_ALL_VALUE, // 全部 } sensor_cmd_e; +// 状态码 typedef enum { - ST_DEV_NORMAL, - ST_DEV_BUSY, - ST_DEV_MISS, + ST_DEV_NORMAL, // 正常 + ST_DEV_BUSY, // 忙碌 + ST_DEV_MISS, // 故障 + ST_CMD_IVALID, // 无效 } status_code_e; +// 测试 +typedef enum +{ + TEST_DEV_IDEL, + TEST_DEV_SENSOR, + TEST_DEV_MOTOR, + TEST_DEV_MAX, +} test_dev_e; + typedef struct { uint8_t head; // 包头 @@ -88,6 +108,14 @@ typedef struct float32 angle; } 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 uint16_t get_torsion_adc(void); extern float32 torsion_detect(void); @@ -97,5 +125,6 @@ extern uint16_t get_flow_adc(void); extern float32 flow_detect(void); extern void host_rx_msg_deal(void); extern void motor_process_init(void); +extern void test_process(void); #endif // __BOARD_H__ diff --git a/User/board/motor.c b/User/board/motor.c index 39bb737..8a537da 100644 --- a/User/board/motor.c +++ b/User/board/motor.c @@ -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); step_motor_t *handle = &motor->handle.step_motor; diff --git a/User/board/motor.h b/User/board/motor.h index 5aaa0b9..7b639b0 100644 --- a/User/board/motor.h +++ b/User/board/motor.h @@ -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 (*run)(motor_t *motor, dir_e dir); // 运行 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 (*set_speed)(motor_t *motor, uint32_t psc); } step_motor_interface_t;