diff --git a/ENS001_BASIC_PRJ.uvguix.29096 b/ENS001_BASIC_PRJ.uvguix.29096 index 31e1889..245740e 100644 --- a/ENS001_BASIC_PRJ.uvguix.29096 +++ b/ENS001_BASIC_PRJ.uvguix.29096 @@ -75,8 +75,8 @@ 2 3 - -32000 - -32000 + -1 + -1 -1 @@ -93,7 +93,7 @@ 0 764 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000006000000010000000100000039433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C555345525C6D69616E2E6300000000066D69616E2E6300000000BECEA100FFFFFFFF46433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C46574C49425C736F757263655C454E53315F554152542E63000000000B454E53315F554152542E6300000000FFDC7800FFFFFFFF47433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C46574C49425C736F757263655C454E53315F54494D45522E63000000000C454E53315F54494D45522E6300000000C5D4F200FFFFFFFF47433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C46574C49425C696E636C7564655C454E53315F554152542E68000000000B454E53315F554152542E6800000000F0A0A100FFFFFFFF49433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C46574C49425C736F757263655C454E53315F5741564547454E2E63000000000E454E53315F5741564547454E2E6300000000BCA8E100FFFFFFFF4A433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C46574C49425C696E636C7564655C454E53315F5741564547454E2E68000000000E454E53315F5741564547454E2E68000000009CC1B600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000940100004A0000008007000063030000 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000006000000010000000100000039433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C555345525C6D69616E2E6300000000066D69616E2E6300000000C5D4F200FFFFFFFF46433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C46574C49425C736F757263655C454E53315F554152542E63000000000B454E53315F554152542E63000000009CC1B600FFFFFFFF47433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C46574C49425C736F757263655C454E53315F54494D45522E63000000000C454E53315F54494D45522E6300000000BCA8E100FFFFFFFF47433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C46574C49425C696E636C7564655C454E53315F554152542E68000000000B454E53315F554152542E6800000000F0A0A100FFFFFFFF49433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C46574C49425C736F757263655C454E53315F5741564547454E2E63000000000E454E53315F5741564547454E2E6300000000BECEA100FFFFFFFF4A433A5C55736572735C32393039365C4465736B746F705C776F726B5CC5AFD0BEE5C85C54494D45525F44454D4F5C46574C49425C696E636C7564655C454E53315F5741564547454E2E68000000000E454E53315F5741564547454E2E6800000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000940100004A0000008007000063030000 @@ -1112,7 +1112,7 @@ 0 16 - 030000004A0000008D01000017030000 + 030000004A0000008D01000033030000 16 @@ -1281,14 +1281,14 @@ 2674 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000940100006600000090050000F4000000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000025020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000000004000066000000900500003C020000000400004F00000090050000250200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF9001000033000000940100004C030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000006600000090010000630300000000000033000000900100004C0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000002C02000090050000CE020000000000001502000090050000B702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000004C0300008007000050030000010000000100001004000000010000000000000000000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000000000006703000080070000F5030000000000005003000080070000DE0300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC500000001000000FFFF02000D004350616E654672616D65576E64000100840A0000000A000000E1010000420000000000000007E8000002000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFF94010000DD00000090050000E1000000000000000100000004000000010000000000000000000000FFFFFFFF06000000CB00000057010000CC000000F08B00005A01000079070000FFFF02000B004354616262656450616E650020000000000000940100006600000090050000F4000000940100004F00000090050000DD0000000000000040280046060000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFFFC0300004F0000000004000025020000000000000200000004000000010000000000000000000000FFFFFFFF17000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C0000018000400000000000000004000066000000900500003C020000000400004F00000090050000250200000000000040410046170000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF9001000033000000940100004C030000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C40000007394000001800010000001000000000000004A00000090010000630300000000000033000000900100004C0300000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000011020000900500001502000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0E0000008F070000930700009407000095070000960700009007000091070000B5010000B8010000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000002C02000090050000CE020000000000001502000090050000B702000000000000404100460E0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000015020000CC020000B702000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000004C0300008007000050030000010000000100001004000000010000000000000000000000FFFFFFFF04000000C5000000C7000000B40100007794000001800080000001000000000000006703000080070000F5030000000000005003000080070000DE0300000000000040820056040000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC500000001000000FFFF02000D004350616E654672616D65576E64000100840A0000000A000000E1010000420000000000000007E8000002000000000000000000000000000000 59392 File - 2448 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000C7370695F72785F636F756E7496000000000000001400145061727365554152545F454D535F5061636B657418557064617465454D535F436F6E66696746726F6D554152540010454D535F50726F636573735F52616D7012454D535F436F6E6669675F547970654465660A656D735F7061636B65740F756172745F646174615F72656164790C7370695F72785F636F756E740E7370695F646174615F72656164790B467573655F726573756C741454696D655F4D616E616765725F50726F6365737309554152545F496E6974074750494F5F31320855415254315F5258104750494F5F416C7446756E6374696F6E0855415254305F52581F4649464FE6A8A1E5BC8FE4B88BEFBC8CE4BCA0E8BE93E599A84649464FE7A9204649464FE6A8A1E5BC8FE4B88BEFBC8CE4BCA0E8BE93E599A84649464FE7A93F2CE6BAA2E587BAE38081E6A0A1E9AA8CE38081E5B8A7E99499E8AFAFE68896E6A380E6B58BE588B0627265616B1373706565645F636F6E74726F6C5F313030687A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 + 2076 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE80300000000000000000000000000000000000000000000000100000001000000960000000200205000000000145061727365554152545F454D535F5061636B657496000000000000000200145061727365554152545F454D535F5061636B657418557064617465454D535F436F6E66696746726F6D554152540000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018022800000020000001500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E4C010000020001001A0000000F50726F6A6563742057696E646F7773000000000000000000000000010000000100000000000000000000000100000008002880DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002880DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002880E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002880E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000288018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000028800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002880D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002880E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65AC030000 1423 @@ -1320,7 +1320,7 @@ Debug 2220 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000002001380D88B000000000000310000000757617463682031000000000000000000000000010000000100000000000000000000000100000000001380D98B0000000000003100000007576174636820320000000000000000000000000100000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000084D656D6F72792031000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000084D656D6F72792032000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000084D656D6F72792033000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000084D656D6F727920340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000755415254202331000000000000000000000000010000000100000000000000000000000100000000001380940700000000000033000000075541525420233200000000000000000000000001000000010000000000000000000000010000000000138095070000000000003300000007554152542023330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000000E49544D2F525441205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380658A000000000000340000000E4C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E00000014506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000D436F646520436F76657261676500000000000000000000000001000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000138001890000000000003600000007546F6F6C626F7800000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -1348,7 +1348,7 @@ .\USER\mian.c 1 - 101 + 96 97 1 @@ -1357,7 +1357,7 @@ .\FWLIB\source\ENS1_UART.c 11 - 330 + 331 355 1 @@ -1375,7 +1375,7 @@ .\FWLIB\include\ENS1_UART.h 17 - 152 + 153 196 1 @@ -1384,7 +1384,7 @@ .\FWLIB\source\ENS1_WAVEGEN.c 1 - 258 + 259 295 1 @@ -1393,7 +1393,7 @@ .\FWLIB\include\ENS1_WAVEGEN.h 25 - 18 + 19 62 1 diff --git a/UART电刺激控制系统技术文档.md b/UART电刺激控制系统技术文档.md new file mode 100644 index 0000000..297f861 --- /dev/null +++ b/UART电刺激控制系统技术文档.md @@ -0,0 +1,430 @@ +# UART电刺激控制系统技术文档 + +## 1. 系统概述 + +本系统基于ENS1芯片实现UART通信控制的电刺激(EMS)功能,通过串口接收控制指令,实时调整电刺激参数并控制输出波形。 + +### 1.1 主要功能 +- UART数据接收与解析 +- 电刺激参数配置 +- 实时波形控制 +- 数据回传确认 + +### 1.2 技术特点 +- 中断驱动的UART通信 +- CRC校验确保数据完整性 +- 实时参数更新 +- 渐进式波形控制 + +## 2. 系统架构 + +### 2.1 文件结构 +``` +USER/ +├── mian.c # 主程序文件 +├── ENS001_CONFIG.h # 配置文件 +└── MY_HEADER.h # 自定义头文件 + +FWLIB/ +├── source/ +│ ├── ENS1_UART.c # UART驱动实现 +│ ├── ENS1_TIMER.c # 定时器控制 +│ └── ENS1_WAVEGEN.c # 波形生成 +└── include/ + └── ENS1_UART.h # UART驱动头文件 +``` + +### 2.2 核心模块 +- **UART通信模块**: 负责数据接收、解析和回传 +- **电刺激控制模块**: 负责参数配置和波形控制 +- **定时器模块**: 提供系统时钟基准 +- **波形生成模块**: 生成电刺激输出波形 + +## 3. UART通信协议 + +### 3.1 数据包格式 +``` +总长度: 19字节 +┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ +│ 功能码 │ 功能码 │ 数据长度│ 数据长度│ 开关类型│ 强度 │ 频率 │ 频率 │ 持续时间│ 持续时间│ 休息时间│ 休息时间│ 静默时间│ 静默时间│ 缓进时间│ 保持时间│ 缓出时间│ CRC16 │ CRC16 │ +│ (低字节)│ (高字节)│ (低字节)│ (高字节)│ │ │ (低字节)│ (高字节)│ (低字节)│ (高字节)│ (低字节)│ (高字节)│ (低字节)│ (高字节)│ │ │ │ (低字节)│ (高字节)│ +└─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ +``` + +### 3.2 字段说明 +| 字段 | 字节位置 | 长度 | 说明 | 示例值 | +|------|----------|------|------|--------| +| 功能码 | 0-1 | 2字节 | 固定值0x0003 | 0x0003 | +| 数据长度 | 2-3 | 2字节 | 数据部分长度 | 0x000D | +| 开关类型 | 4 | 1字节 | 0x00=关闭, 0x10~0x1F=开启 | 0x10 | +| 强度 | 5 | 1字节 | 电刺激强度(0-255) | 50 | +| 频率 | 6-7 | 2字节 | 电刺激频率(Hz) | 100 | +| 持续时间 | 8-9 | 2字节 | 总持续时间(ms) | 5000 | +| 休息时间 | 10-11 | 2字节 | 休息间隔(ms) | 1000 | +| 静默时间 | 12-13 | 2字节 | 静默间隔(ms) | 244 | +| 缓进时间 | 14 | 1字节 | 渐入时间(ms) | 1 | +| 保持时间 | 15 | 1字节 | 保持时间(ms) | 1 | +| 缓出时间 | 16 | 1字节 | 渐出时间(ms) | 3 | +| CRC16 | 17-18 | 2字节 | CRC-16-CCITT-FALSE校验 | 0x90B7 | + +### 3.3 字节序说明 +- 多字节字段采用小端序(Little Endian) +- 低字节在前,高字节在后 + +## 4. 工作流程 + +### 4.1 系统初始化流程 +```mermaid +graph TD + A[系统启动] --> B[MTP初始化] + B --> C[GPIO配置] + C --> D[UART初始化] + D --> E[定时器初始化] + E --> F[电刺激模块初始化] + F --> G[进入主循环] +``` + +### 4.2 UART数据接收流程 +```mermaid +graph TD + A[UART中断触发] --> B[读取FIFO数据] + B --> C[存储到接收缓冲区] + C --> D[回传数据确认] + D --> E{数据包完整?} + E -->|否| F[继续接收] + E -->|是| G[解析数据包] + G --> H{解析成功?} + H -->|否| I[丢弃数据包] + H -->|是| J[更新电刺激配置] + J --> K[启动/停止电刺激] + K --> L[清除缓冲区] +``` + +### 4.3 电刺激控制流程 +```mermaid +graph TD + A[接收UART数据] --> B[解析数据包] + B --> C{开关类型检查} + C -->|0x00| D[停止电刺激] + C -->|0x10~0x1F| E[参数有效性检查] + E --> F[创建新配置] + F --> G[应用配置] + G --> H[启动电刺激] + H --> I[波形生成] +``` + +## 5. 电刺激缓进缓出实现 + +### 5.1 缓进缓出原理 + +电刺激的缓进缓出功能通过三个阶段实现平滑的强度变化: + +#### 5.1.1 三个阶段 +1. **缓进阶段 (Ramp Up)**: 强度从0逐渐增加到目标值 +2. **保持阶段 (Hold)**: 强度保持在目标值 +3. **缓出阶段 (Ramp Down)**: 强度从目标值逐渐减少到0 + +#### 5.1.2 时间控制 +```c +// 时间参数(单位:毫秒) +uint32_t ramp_up_ms = g_ems_config.ramp_up_time * 1000; // 缓进时间 +uint32_t hold_ms = g_ems_config.hold_time * 1000; // 保持时间 +uint32_t ramp_down_ms = g_ems_config.ramp_down_time * 1000; // 缓出时间 +``` + +#### 5.1.3 强度计算算法 +- **缓进阶段**: `target_intensity = (time_count * max_intensity) / ramp_up_ms` +- **保持阶段**: `target_intensity = max_intensity` +- **缓出阶段**: `target_intensity = max_intensity - (ramp_down_elapsed * max_intensity) / ramp_down_ms` + +### 5.2 缓进缓出实现代码 + +```c +// 缓进缓出处理函数(在电刺激处理中调用) +void EMS_Process_Ramp(void) +{ + if(ems_state) + { + time_count++; + if (!g_ems_config.enable_ramp || !g_ems_running) + { + return; // 如果未启用缓进缓出或未运行,直接返回 + } + + // 计算各阶段时间(毫秒) + uint32_t ramp_up_ms = g_ems_config.ramp_up_time * 1000; + uint32_t hold_ms = g_ems_config.hold_time * 1000; + uint32_t ramp_down_ms = g_ems_config.ramp_down_time * 1000; + + switch (g_ramp_phase) + { + case 0: // 缓进阶段 + { + if (time_count <= g_ems_config.ramp_up_time * 1000) + { + // 线性递增强度 + uint16_t target_intensity = (time_count * g_ems_config.intensity) / ramp_up_ms; + if (target_intensity > g_ems_config.intensity) { + target_intensity = g_ems_config.intensity; + } + g_current_intensity = target_intensity; + } + else + { + // 缓进完成,进入保持阶段 + g_ramp_phase = 1; + g_current_intensity = g_ems_config.intensity; + } + break; + } + + case 1: // 保持阶段 + { + if(time_count <= (ramp_up_ms + hold_ms)) + { + g_current_intensity = g_ems_config.intensity; + } + else + { + g_ramp_phase = 2; // 进入缓出阶段 + } + break; + } + + case 2: // 缓出阶段 + { + if(time_count <= (ramp_up_ms + hold_ms + ramp_down_ms)) + { + // 计算缓出阶段的时间偏移 + uint32_t ramp_down_start = ramp_up_ms + hold_ms; + uint32_t ramp_down_elapsed = time_count - ramp_down_start; + + // 线性递减强度 + uint16_t target_intensity = g_ems_config.intensity - + (ramp_down_elapsed * g_ems_config.intensity) / ramp_down_ms; + + if (target_intensity > g_ems_config.intensity) { + target_intensity = 0; + } + g_current_intensity = target_intensity; + } + else + { + // 缓出完成,停止电刺激 + g_current_intensity = 0; + g_ramp_phase = 0; // 重置为缓进阶段 + } + break; + } + } + } +} +``` + +### 5.3 波形强度更新 + +```c +// 更新波形强度(不重新配置硬件) +void wavegen_UpdateIntensity(CMSDK_WAVE_GEN_TypeDef *CMSDK_WAVEGEN_DRVA, uint16_t intensity) +{ + // 只更新波形数据,不重新配置硬件 + for (int i = 0; i < 64; i++) + { + CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_ADDR_REG = i; + CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_DATA_REG = intensity; + } +} +``` + +### 5.4 状态管理变量 + +```c +// 全局状态变量 +uint8_t g_ramp_phase = 0; // 渐进阶段:0=缓进, 1=保持, 2=缓出 +uint32_t time_count = 0; // 时间计数器(毫秒) +uint16_t g_current_intensity = 0; // 当前强度值 +uint8_t g_ems_running = 0; // 电刺激运行状态 +``` + +### 5.5 缓进缓出流程图 + +```mermaid +graph TD + A[开始电刺激] --> B[缓进阶段] + B --> C{时间 < 缓进时间?} + C -->|是| D[线性增加强度] + C -->|否| E[进入保持阶段] + D --> F[更新波形强度] + F --> C + E --> G{时间 < 保持时间?} + G -->|是| H[保持最大强度] + G -->|否| I[进入缓出阶段] + H --> J[更新波形强度] + J --> G + I --> K{时间 < 缓出时间?} + K -->|是| L[线性减少强度] + K -->|否| M[停止电刺激] + L --> N[更新波形强度] + N --> K + M --> O[重置状态] + O --> A +``` + +## 6. 核心代码实现 + +### 6.1 UART中断处理函数 +```c +void UART1_Handler(void) { + uint8_t rev_data = 0; + uint32_t ParamNumber = 0; + + // 清除NVIC中断挂起位 + NVIC_ClearPendingIRQ(UART1_IRQn); + + // 检查中断类型 + uint8_t int_type = UART_INT_TYPE(CMSDK_UART1); + + // 数据就绪中断处理 + if((int_type == INT_RCV_DATA_AVAILABLE) || (int_type == INT_CHAR_TIMEOUT_INDICATION)) { + ParamNumber = (CMSDK_UART1->FSR >> 16) & 0x1f; + + // 读取FIFO中的所有数据 + for(uint32_t i = 0; i < ParamNumber; i++) { + rev_data = CMSDK_UART1->RBR; + + // 存储到缓冲区 + if(uart_rx_count < sizeof(uart_rx_buffer)) { + uart_rx_buffer[uart_rx_count] = rev_data; + uart_rx_count++; + } + + // 回传数据确认 + UartPutc(CMSDK_UART1, rev_data); + } + + // 检查完整数据包 + if(uart_rx_count >= 19) { + UART_EMS_Packet_t ems_packet; + if(ParseUART_EMS_Packet(uart_rx_buffer, uart_rx_count, &ems_packet)) { + UpdateEMS_ConfigFromUART(&ems_packet); + } + uart_rx_count = 0; // 清除缓冲区 + } + } +} +``` + +### 6.2 数据包解析函数 +```c +uint8_t ParseUART_EMS_Packet(uint8_t *data, uint16_t length, UART_EMS_Packet_t *packet) { + // 解析数据包(小端序) + packet->function_code = (data[1] << 8) | data[0]; + packet->data_length = (data[3] << 8) | data[2]; + packet->switch_type = data[4]; + packet->intensity = data[5]; + packet->frequency = (data[7] << 8) | data[6]; + packet->duration = (data[9] << 8) | data[8]; + packet->rest_time = (data[11] << 8) | data[10]; + packet->silent_time = (data[13] << 8) | data[12]; + packet->ramp_up_time = data[14]; + packet->hold_time = data[15]; + packet->ramp_down_time = data[16]; + packet->crc16 = (data[18] << 8) | data[17]; + + // CRC校验(当前已注释) + // uint16_t calculated_crc = CalculateCRC16_CCITT_FALSE(data, 17); + // if(calculated_crc != packet->crc16) return 0; + + return 1; // 解析成功 +} +``` + +### 6.3 电刺激配置更新函数 +```c +void UpdateEMS_ConfigFromUART(UART_EMS_Packet_t *packet) { + // 检查开关状态 + if(packet->switch_type == 0x00) { + EMS_Stop(); + return; + } + + // 检查电刺激类型有效性 + if(packet->switch_type < 0x10 || packet->switch_type > 0x1F) { + return; + } + + // 创建新配置 + EMS_Config_TypeDef new_config = { + .frequency = packet->frequency, + .duration = packet->duration, + .intensity = packet->intensity, + .rest_time = packet->rest_time, + .silent_time = packet->silent_time, + .ramp_up_time = packet->ramp_up_time, + .hold_time = packet->hold_time, + .ramp_down_time = packet->ramp_down_time, + .enable_ramp = 1 + }; + + // 应用配置并启动 + EMS_Configure(&new_config); + EMS_Start(); +} +``` + +## 7. 关键数据结构 + +### 7.1 UART数据包结构 +```c +typedef struct { + uint16_t function_code; // 功能码 (0x0003) + uint16_t data_length; // 数据长度 (0x000D) + uint8_t switch_type; // 开关状态以及电刺激类型 + uint8_t intensity; // 强度值 + uint16_t frequency; // 频率值 + uint16_t duration; // 总持续时间 (ms) + uint16_t rest_time; // 休息时间 (ms) + uint16_t silent_time; // 静默时间 (ms) + uint8_t ramp_up_time; // 缓进时间 + uint8_t hold_time; // 保持时间 + uint8_t ramp_down_time; // 缓出时间 + uint16_t crc16; // CRC16校验 +} UART_EMS_Packet_t; +``` + +### 7.2 电刺激配置结构 +```c +typedef struct { + uint16_t frequency; // 频率 + uint16_t duration; // 持续时间 + uint8_t intensity; // 强度 + uint16_t rest_time; // 休息时间 + uint16_t silent_time; // 静默时间 + uint8_t ramp_up_time; // 缓进时间 + uint8_t hold_time; // 保持时间 + uint8_t ramp_down_time; // 缓出时间 + uint8_t enable_ramp; // 启用渐进控制 +} EMS_Config_TypeDef; +``` + +## 8. 调试与测试 + +### 8.1 调试输出 +系统提供详细的调试输出,包括: +- 接收到的原始数据 +- 解析后的参数值 +- 配置更新状态 +- 错误信息 + +### 8.2 测试用例 +1. **停止指令测试** + ``` + 数据包: 03 00 0d 00 00 32 64 00 88 13 e8 03 f4 01 01 03 01 b7 90 + 预期: 停止电刺激 + ``` + +2. **启动指令测试** + ``` + 数据包: 03 00 0d 00 10 32 64 00 88 13 e8 03 f4 01 01 03 01 [CRC] + 预期: 启动电刺激,频率100Hz,强度50 + ``` diff --git a/USER/mian.c b/USER/mian.c index ec7c10c..0cc57f6 100644 --- a/USER/mian.c +++ b/USER/mian.c @@ -150,7 +150,7 @@ void UpdateEMS_ConfigFromUART(UART_EMS_Packet_t *packet) .enable_ramp = 1 // 启用渐进控制 }; - // 打印接收到的参数数据 + printf("0x%02X\n", packet->switch_type); printf("%d\n", packet->intensity); printf("%d\n", packet->frequency);