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);