From 77b1e659e50f726945666e2ef62fc0aa2c1349c2 Mon Sep 17 00:00:00 2001 From: tianjialong Date: Thu, 2 Mar 2023 11:58:08 +0800 Subject: [PATCH] =?UTF-8?q?at=E6=8C=87=E4=BB=A4=E4=B8=8B=E5=8F=91=E5=8F=AF?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E6=9C=89=E8=BF=94=E5=9B=9E=E5=80=BC=EF=BC=8C?= =?UTF-8?q?at=E6=8C=87=E4=BB=A4=E5=A4=84=E7=90=86=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8F=82=E8=80=83=E8=B5=B5=E8=80=81=E5=B8=88?= =?UTF-8?q?=E7=9A=84modbus=E5=86=99=E7=9A=84=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MDK-ARM/LWIP.uvguix.29643 | 32 ++++++++++++++++++++++------ usersrc/atcmd.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++ usersrc/atcmd.h | 3 +++ usersrc/usermain.c | 4 +++- usersrc/zport.c | 19 +++++++++++++++++ usersrc/zport.h | 7 ++++++ 6 files changed, 111 insertions(+), 8 deletions(-) diff --git a/MDK-ARM/LWIP.uvguix.29643 b/MDK-ARM/LWIP.uvguix.29643 index e7e43a5..b4c71fe 100644 --- a/MDK-ARM/LWIP.uvguix.29643 +++ b/MDK-ARM/LWIP.uvguix.29643 @@ -110,8 +110,8 @@ 0 - 1268 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000A000000090000000100000052433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C5372635C6672656572746F732E63000000000A6672656572746F732E6300000000C5D4F200FFFFFFFF56433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C757365726D61696E2E63000000000A757365726D61696E2E6300000000FFDC7800FFFFFFFF54433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A666C6173682E6300000000087A666C6173682E6300000000BECEA100FFFFFFFF54433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C636F6E6669672E680000000008636F6E6669672E6800000000F0A0A100FFFFFFFF54433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C636F6E6669672E630000000008636F6E6669672E6300000000BCA8E100FFFFFFFF54433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A626F6172642E6800000000087A626F6172642E68000000009CC1B600FFFFFFFF55433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C656E636F6465722E630000000009656E636F6465722E6300000000F7B88600FFFFFFFF52433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A6B65792E6800000000067A6B65792E6800000000D9ADC200FFFFFFFF52433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A6B65792E6300000000067A6B65792E6300000000A5C2D700FFFFFFFF53433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A706F72742E6800000000077A706F72742E6800000000B3A6BE00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007408000066000000000F0000D4020000 + 1484 + 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000C0000000B0000000100000052433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C5372635C6672656572746F732E63000000000A6672656572746F732E6300000000C5D4F200FFFFFFFF56433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C757365726D61696E2E63000000000A757365726D61696E2E6300000000FFDC7800FFFFFFFF54433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A666C6173682E6300000000087A666C6173682E6300000000BECEA100FFFFFFFF54433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C636F6E6669672E680000000008636F6E6669672E6800000000F0A0A100FFFFFFFF54433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C636F6E6669672E630000000008636F6E6669672E6300000000BCA8E100FFFFFFFF54433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A626F6172642E6800000000087A626F6172642E68000000009CC1B600FFFFFFFF55433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C656E636F6465722E630000000009656E636F6465722E6300000000F7B88600FFFFFFFF52433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A6B65792E6800000000067A6B65792E6800000000D9ADC200FFFFFFFF52433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A6B65792E6300000000067A6B65792E6300000000A5C2D700FFFFFFFF53433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A706F72742E6800000000077A706F72742E6800000000B3A6BE00FFFFFFFF53433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C7A706F72742E6300000000077A706F72742E6300000000EAD6A300FFFFFFFF53433A5C55736572735C32393634335C4465736B746F705C705F6C7573746572696E635F63616D6572615F666F63616C6C656E6774685F656E636F6465725F72657365745C757365727372635C6174636D642E6300000000076174636D642E6300000000F6FA7D00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000007408000066000000000F0000D4020000 @@ -1806,7 +1806,7 @@ File 2537 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1822,7 +1822,7 @@ Build 968 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000044C57495096000000000000000100044C574950000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000044C57495096000000000000000100044C574950000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -1862,7 +1862,7 @@ 0 100 - 9 + 11 ../Src/freertos.c 1 @@ -1946,9 +1946,27 @@ ..\usersrc\zport.h - 1 + 0 1 - 19 + 32 + 1 + + 0 + + + ..\usersrc\zport.c + 0 + 68 + 102 + 1 + + 0 + + + ..\usersrc\atcmd.c + 0 + 155 + 189 1 0 diff --git a/usersrc/atcmd.c b/usersrc/atcmd.c index 6f87bf2..6eae3c1 100644 --- a/usersrc/atcmd.c +++ b/usersrc/atcmd.c @@ -1,4 +1,16 @@ #include "atcmd.h" +#include "zport.h" + +#define at_processer_rx_buf_size 128 +#define at_processer_tx_buf_size 128 + +// 接收到了多少数据 +volatile uint16_t s_at_cmd_uart_rx_off = 0; +// 当前是否正在处理接收到的数据 +volatile bool s_at_cmd_uart_rx_buf_is_processing = false; + +static uint8_t at_rx_buf[at_processer_rx_buf_size]; +//static uint8_t at_tx_buf[at_processer_tx_buf_size]; /* AT指令表 */ const AT_cmd_func at_cmd_func[] = { @@ -132,3 +144,45 @@ unsigned char at_cmd_parse(unsigned char *p, unsigned char len) return ret; } + +void at_cmd_processer_push_data(uint8_t rxdata) +{ + if (!s_at_cmd_uart_rx_buf_is_processing) + { + if (s_at_cmd_uart_rx_off < at_processer_rx_buf_size) + { + at_rx_buf[s_at_cmd_uart_rx_off] = rxdata; + s_at_cmd_uart_rx_off++; + } + } +} + +void at_cmd_processer_try_process_data(void) +{ + /** + * @brief + * 根据modbus协议,当超过3.5个字符时间后依然没有收到数据 + */ + if (s_at_cmd_uart_rx_off != 0) + { + uint16_t modbus_uart_rx_off_before = s_at_cmd_uart_rx_off; + + HAL_Delay(1); + + sys_critical_enter(); + if (s_at_cmd_uart_rx_off == modbus_uart_rx_off_before) + { + s_at_cmd_uart_rx_buf_is_processing = true; + } + sys_critical_exit(); + + if (s_at_cmd_uart_rx_buf_is_processing) + { + at_cmd_parse(at_rx_buf, s_at_cmd_uart_rx_off); + sys_critical_enter(); + s_at_cmd_uart_rx_off = 0; + s_at_cmd_uart_rx_buf_is_processing = false; + sys_critical_exit(); + } + } +} diff --git a/usersrc/atcmd.h b/usersrc/atcmd.h index 249156a..4ddadad 100644 --- a/usersrc/atcmd.h +++ b/usersrc/atcmd.h @@ -1,6 +1,7 @@ #pragma once #include "main.h" #include +#include #define AT_SUCCESS (0) /* 指令正常 */ #define AT_ERR (1) /* 指令异常 */ @@ -33,3 +34,5 @@ unsigned char at_cmd_test(unsigned char *p, unsigned char len); unsigned char at_cmd_ip(unsigned char *p, unsigned char len); unsigned char AT_cmd_search(unsigned char *p, unsigned char len); unsigned char at_cmd_parse(unsigned char *p, unsigned char len); +void at_cmd_processer_push_data(uint8_t rxdata); +void at_cmd_processer_try_process_data(void); diff --git a/usersrc/usermain.c b/usersrc/usermain.c index 2cb9a8d..0fb6128 100644 --- a/usersrc/usermain.c +++ b/usersrc/usermain.c @@ -14,6 +14,7 @@ #include "zflash.h" #include "config.h" #include "zkey.h" +#include "atcmd.h" #define KEY_SCAN_PERIOD 20 @@ -76,7 +77,7 @@ void port_mock_on_uart_rx(uart_t *uart) // 处理指令串口接收到的数据 if (uart->uarthandler == &DEBUG_UART) { - printf("%c", uart->rxbuf); + at_cmd_processer_push_data(uart->rxbuf); } } @@ -96,6 +97,7 @@ void user_main() zkey_schedule(); udp_client_recv(); encoder_read_printf(); + at_cmd_processer_try_process_data(); port_do_debug_light_state(); osDelay(1); } diff --git a/usersrc/zport.c b/usersrc/zport.c index 1d63181..a837c58 100644 --- a/usersrc/zport.c +++ b/usersrc/zport.c @@ -4,6 +4,8 @@ #include #include "zboard.h" +uint8_t g_port_exit_critical_count; + uint32_t sys_haspassedms(uint32_t ticket) { uint32_t nowticket = HAL_GetTick(); @@ -80,3 +82,20 @@ void port_uart_start_all_uart_receive(void) uarts_start_receive(&m_uarts[i]); } } + +void sys_critical_enter(void) +{ + if (g_port_exit_critical_count == 0) + { + __disable_irq(); + } + g_port_exit_critical_count++; +} +void sys_critical_exit(void) +{ + g_port_exit_critical_count--; + if (g_port_exit_critical_count == 0) + { + __enable_irq(); + } +} diff --git a/usersrc/zport.h b/usersrc/zport.h index cbe0968..d02da4f 100644 --- a/usersrc/zport.h +++ b/usersrc/zport.h @@ -15,6 +15,11 @@ void port_do_debug_light_state(void); /*********************************************************************************************************************** * *******************************************************串口******************************************************** * ***********************************************************************************************************************/ +// 注意修改这里并不会修改真正的波特率,需要修改usart.c中对应的位置 +// #define at_cmd_baundrate 115200 +/*modebus判断一帧是以是否3.5byte时间内是否收到新的数据*/ +// #define kat_cmd_baundrate_one_packet_delay_us ((1000000 / (at_cmd_baundrate / 8) + 1) * 3) // 211 + typedef struct { UART_HandleTypeDef *uarthandler; @@ -23,3 +28,5 @@ typedef struct void port_mock_on_uart_rx(uart_t *uart); void port_uart_start_all_uart_receive(void); +void sys_critical_enter(void); +void sys_critical_exit(void);