From c0cb1ee1fd7dd10096452bea69e9f81a466fd0e2 Mon Sep 17 00:00:00 2001 From: wangxujie Date: Thu, 10 Jul 2025 13:39:29 +0800 Subject: [PATCH] =?UTF-8?q?BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../valve_debugging_STM32F407ZGTx.dbgconf | 48 +++ MDK-ARM/valve_debugging/valve_debugging.hex | 356 +++++++++--------- User/application/src/tcpserverc.c | 66 ++-- 3 files changed, 259 insertions(+), 211 deletions(-) create mode 100644 MDK-ARM/DebugConfig/valve_debugging_STM32F407ZGTx.dbgconf diff --git a/MDK-ARM/DebugConfig/valve_debugging_STM32F407ZGTx.dbgconf b/MDK-ARM/DebugConfig/valve_debugging_STM32F407ZGTx.dbgconf new file mode 100644 index 0000000..1df0a1b --- /dev/null +++ b/MDK-ARM/DebugConfig/valve_debugging_STM32F407ZGTx.dbgconf @@ -0,0 +1,48 @@ +// File: STM32F405_415_407_417_427_437_429_439.dbgconf +// Version: 1.0.0 +// Note: refer to STM32F405/415 STM32F407/417 STM32F427/437 STM32F429/439 reference manual (RM0090) +// refer to STM32F40x STM32F41x datasheets +// refer to STM32F42x STM32F43x datasheets + +// <<< Use Configuration Wizard in Context Menu >>> + +// Debug MCU configuration register (DBGMCU_CR) +// DBG_STANDBY Debug Standby Mode +// DBG_STOP Debug Stop Mode +// DBG_SLEEP Debug Sleep Mode +// +DbgMCU_CR = 0x00000007; + +// Debug MCU APB1 freeze register (DBGMCU_APB1_FZ) +// Reserved bits must be kept at reset value +// DBG_CAN2_STOP CAN2 stopped when core is halted +// DBG_CAN1_STOP CAN2 stopped when core is halted +// DBG_I2C3_SMBUS_TIMEOUT I2C3 SMBUS timeout mode stopped when core is halted +// DBG_I2C2_SMBUS_TIMEOUT I2C2 SMBUS timeout mode stopped when core is halted +// DBG_I2C1_SMBUS_TIMEOUT I2C1 SMBUS timeout mode stopped when core is halted +// DBG_IWDG_STOP Independent watchdog stopped when core is halted +// DBG_WWDG_STOP Window watchdog stopped when core is halted +// DBG_RTC_STOP RTC stopped when core is halted +// DBG_TIM14_STOP TIM14 counter stopped when core is halted +// DBG_TIM13_STOP TIM13 counter stopped when core is halted +// DBG_TIM12_STOP TIM12 counter stopped when core is halted +// DBG_TIM7_STOP TIM7 counter stopped when core is halted +// DBG_TIM6_STOP TIM6 counter stopped when core is halted +// DBG_TIM5_STOP TIM5 counter stopped when core is halted +// DBG_TIM4_STOP TIM4 counter stopped when core is halted +// DBG_TIM3_STOP TIM3 counter stopped when core is halted +// DBG_TIM2_STOP TIM2 counter stopped when core is halted +// +DbgMCU_APB1_Fz = 0x00000000; + +// Debug MCU APB2 freeze register (DBGMCU_APB2_FZ) +// Reserved bits must be kept at reset value +// DBG_TIM11_STOP TIM11 counter stopped when core is halted +// DBG_TIM10_STOP TIM10 counter stopped when core is halted +// DBG_TIM9_STOP TIM9 counter stopped when core is halted +// DBG_TIM8_STOP TIM8 counter stopped when core is halted +// DBG_TIM1_STOP TIM1 counter stopped when core is halted +// +DbgMCU_APB2_Fz = 0x00000000; + +// <<< end of configuration section >>> \ No newline at end of file diff --git a/MDK-ARM/valve_debugging/valve_debugging.hex b/MDK-ARM/valve_debugging/valve_debugging.hex index e0f8f35..d6d5fa3 100644 --- a/MDK-ARM/valve_debugging/valve_debugging.hex +++ b/MDK-ARM/valve_debugging/valve_debugging.hex @@ -3016,11 +3016,11 @@ :10BC60002400FFF782FB601CC4B2102CD8DB01F06B :10BC700073FC054641F28B3219492846FFF732FC26 :10BC8000FF21284601F0EEFA054616492846FFF73F -:10BC90006CFB11B030BD0000D1200108ECC30120C5 -:10BCA000F121010815220108392201085D2201084D -:10BCB00081220108A5220108C9220108ED220108FC -:10BCC000F5200108192101083D2101086121010821 -:10BCD00085210108A9210108CD2101086CC401209A +:10BC90006CFB11B030BD0000D9200108ECC30120BD +:10BCA000392201086522010891220108BD220108FC +:10BCB000E922010815230108412301086D23010829 +:10BCC00005210108312101085D21010889210108B0 +:10BCD000B5210108E12101080D2201086CC40120F1 :10BCE000744D0108AD2001082DE9F04106460D46CE :10BCF000174600BF002F08D100BF10A340F6C502B1 :10BD00001AA124A0F7F74CFF00BF00BF15B93046B9 @@ -4619,180 +4619,180 @@ :1020800063620000417373657274696F6E2022256C :102090007322206661696C6564206174206C696ECE :1020A0006520256420696E2025730A0070B50546F9 -:1020B0000C46164604492046FDF7E0FD0120034981 -:1020C0000870002070BD000011230108940000205A -:1020D00070B505460C46164604492046FDF7CEFD70 -:1020E000012003490870002070BD00002924010868 -:1020F0006CC4012070B505460C46164604492046BE -:10210000FDF7BCFD012003494872002070BD0000AE -:102110009D2401086CC4012070B505460C46164686 -:1021200004492046FDF7AAFD0120034988720020DA -:1021300070BD0000152501086CC4012070B505466E -:102140000C46164604492046FDF798FD0120034938 -:10215000C872002070BD00008D2501086CC40120EC -:1021600070B505460C46164604492046FDF786FD27 -:10217000012003490873002070BD000001260108FA -:102180006CC4012070B505460C461646044920462D -:10219000FDF774FD012003494873002070BD000065 -:1021A000752601086CC4012070B505460C4616461C -:1021B00004492046FDF762FD012003498873002091 -:1021C00070BD0000E92601086CC4012070B5054609 -:1021D0000C46164604492046FDF750FD01200349F0 -:1021E000C873002070BD00005D2701086CC4012089 -:1021F00070B505460C46164604492046FDF73EFDDF -:10220000012003494870002070BD0000D12701085B -:102210006CC4012070B505460C461646044920469C -:10222000FDF72CFD012003498870002070BD0000DF -:10223000492801086CC4012070B505460C461646B5 -:1022400004492046FDF71AFD01200349C87000200B -:1022500070BD0000C12801086CC4012070B505469E -:102260000C46164604492046FDF708FD01200349A7 -:102270000871002070BD0000392901086CC40120DC -:1022800070B505460C46164604492046FDF7F6FC97 -:10229000012003494871002070BD0000B1290108E8 -:1022A0006CC4012070B505460C461646044920460C -:1022B000FDF7E4FC012003498871002070BD000097 -:1022C000292A01086CC4012070B505460C46164643 -:1022D00004492046FDF7D2FC01200349C8710020C3 -:1022E00070BD0000A12A01086CC4012070B505462C -:1022F0000C46164604492046FDF7C0FC0120034960 -:102300000872002070BD0000192B01086CC4012068 -:102310002DE9F043CDB081460E4614461F4680217C -:102320002DA8EEF71AF880210DA8EEF716F8002573 -:10233000A846002C65D021893046FDF757FD374867 -:10234000066022892DA86168EDF7E0FF257A9DF8E7 -:10235000B400AA2804D1681E2DA9085C3C280DD021 -:102360004FF0070801222DA90DA8F2F79BF80123D1 -:1023700042460DA93046FFF7F5F83EE0E81E81B26F -:102380000DF1B50002F0ECFBA91E2DAA515C8842AC -:102390000DD04FF0070802222DA90DA8F2F782F800 -:1023A000012342460DA93046FFF7DCF825E09DF8F1 -:1023B000B8200DF1B9016846EDF7A8FF9DF8B70008 -:1023C00001280DD11649C1F800D008460068F2F77F -:1023D00083F801232A462DA93046FFF7C3F80CE005 -:1023E0004FF0070803222DA90DA8F2F75BF801238F -:1023F00042460DA93046FFF7B5F82046F7F700FC36 -:1024000009E047B90020074908703046F9F722F97A -:102410004DB0BDE8F0830020FAE700008C000020FA -:1024200090000020940000202DE9F04107460D4661 -:1024300014461E46F4B121892846FDF7D7FC1348FF -:10244000056080211248EDF788FF228910486168F5 -:10245000EDF75CFF22890E490020F1F777FF207A23 -:102460000C49487008468068401C88602046F7F791 -:10247000C7FB08E03EB90020074908702846F9F775 -:10248000E9F8BDE8F0810020FBE700002CC4012042 -:1024900088C501207CC401206CC401202DE9F041D5 -:1024A00007460D4614461E460CB321892846FDF703 -:1024B0009DFC1448456280211348EDF74EFF2289A8 -:1024C00011486168EDF722FF22890F490920F1F7D1 -:1024D0003DFF217A0D4880F8ED1DD0F8F40D401C29 -:1024E0000A49C1F8F40D2046F7F78AFB08E03EB927 -:1024F0000020074948722846F9F7ACF8BDE8F0819A -:102500000020FBE72CC4012074D301207CC40120EF +:1020B0000C46164605492046FDF7E0FD044804603D +:1020C000012004490870002070BD00009923010818 +:1020D0008C0000209400002070B505460C46164682 +:1020E00005492046FDF7CAFD044804600120044963 +:1020F0000870002070BD0000A92401082CC4012034 +:102100006CC4012070B505460C46164605492046AC +:10211000FDF7B4FD044844620120044948720020E0 +:1021200070BD0000152501082CC401206CC40120DD +:1021300070B505460C46164605492046FDF79EFD3E +:1021400004488462012004498872002070BD0000A8 +:10215000852501082CC401206CC4012070B50546FA +:102160000C46164605492046FDF788FD0448C46222 +:1021700001200449C872002070BD0000F525010847 +:102180002CC401206CC4012070B505460C461646CF +:1021900005492046FDF772FD044804630120044907 +:1021A0000873002070BD0000612601082CC40120C6 +:1021B0006CC4012070B505460C46164605492046FC +:1021C000FDF75CFD04484463012004494873002086 +:1021D00070BD0000CD2601082CC401206CC4012074 +:1021E00070B505460C46164605492046FDF746FDE6 +:1021F00004488463012004498873002070BD0000F6 +:10220000392701082CC401206CC4012070B5054693 +:102210000C46164605492046FDF730FD0448C463C8 +:1022200001200449C873002070BD0000A5270108E3 +:102230002CC401206CC4012070B505460C4616461E +:1022400005492046FDF71AFD044844600120044971 +:102250004870002070BD0000112801082CC4012026 +:102260006CC4012070B505460C461646054920464B +:10227000FDF704FD044884600120044988700020B3 +:1022800070BD0000812801082CC401206CC401200D +:1022900070B505460C46164605492046FDF7EEFC8E +:1022A0000448C46001200449C870002070BD0000CB +:1022B000F12801082CC401206CC4012070B505462A +:1022C0000C46164605492046FDF7D8FC0448046133 +:1022D000012004490871002070BD00006129010837 +:1022E0002CC401206CC4012070B505460C4616466E +:1022F00005492046FDF7C2FC044844610120044919 +:102300004871002070BD0000D12901082CC40120B3 +:102310006CC4012070B505460C461646054920469A +:10232000FDF7ACFC04488461012004498871002059 +:1023300070BD0000412A01082CC401206CC401209A +:1023400070B505460C46164605492046FDF796FC35 +:102350000448C46101200449C871002070BD000018 +:10236000B12A01082CC401206CC4012070B50546B7 +:102370000C46164605492046FDF780FC04480462D9 +:10238000012004490872002070BD0000212B0108C3 +:102390002CC401206CC401202DE9F043CDB081464E +:1023A0000E4614461F4680212DA8EDF7D6FF80214A +:1023B0000DA8EDF7D2FF0025A846002C63D0218997 +:1023C0003046FDF713FD22892DA86168EDF79EFFC9 +:1023D000257A9DF8B400AA2804D1681E2DA9085CAE +:1023E0003C280DD04FF0070801222DA90DA8F2F7C7 +:1023F00059F8012342460DA93046FFF7B3F83EE0F5 +:10240000E81E81B20DF1B50002F0AAFBA91E2DAAAB +:10241000515C88420DD04FF0070802222DA90DA86B +:10242000F2F740F8012342460DA93046FFF79AF82B +:1024300025E09DF8B8200DF1B9016846EDF766FF7B +:102440009DF8B70001280DD11549C1F800D0084604 +:102450000068F2F741F801232A462DA93046FFF71C +:1024600081F80CE04FF0070803222DA90DA8F2F720 +:1024700019F8012342460DA93046FFF773F82046AC +:10248000F7F7BEFB09E047B900200649087030465F +:10249000F9F7E0F84DB0BDE8F0830020FAE700005E +:1024A00090000020940000202DE9F04107460D46E1 +:1024B00014461E46E4B121892846FDF797FC802189 +:1024C0001148EDF74AFF22890F486168EDF71EFFBA +:1024D00022890D490020F1F739FF207A0B49487015 +:1024E00008468068401C88602046F7F789FB08E0B2 +:1024F0003EB90020064908702846F9F7ABF8BDE858 +:10250000F0810020FBE7000088C501207CC4012089 :102510006CC401202DE9F04107460D4614461E46C5 -:102520000CB321892846FDF761FC1448856280219F -:102530001348EDF712FF228911486168EDF7E6FEB6 -:1025400022890F490A20F1F701FF217A0D4880F80E -:10255000791FD0F8800F401C0A49C1F8800F20462F -:10256000F7F74EFB08E03EB900200749887228467D -:10257000F9F770F8BDE8F0810020FBE72CC40120DA -:1025800000D501207CC401206CC401202DE9F0415C -:1025900007460D4614461E46F4B121892846FDF72C -:1025A00025FC1348C56280211248EDF7D6FE22892A -:1025B00010486168EDF7AAFE22890E490B20F1F759 -:1025C000C5FE207A0C49487008468068401C886027 -:1025D0002046F7F715FB08E03EB900200749C8720E -:1025E0002846F9F737F8BDE8F0810020FBE7000046 -:1025F0002CC401208CD6012080D501206CC4012080 -:102600002DE9F04107460D4614461E46F4B12189D6 -:102610002846FDF7EBFB1348056380211248EDF7D0 -:102620009CFE228910486168EDF770FE22890E49F0 -:102630000C20F1F78BFE207A0C4948700846806820 -:10264000401C88602046F7F7DBFA08E03EB900201E -:10265000074908732846F8F7FDFFBDE8F081002020 -:10266000FBE700002CC4012018D801200CD7012062 -:102670006CC401202DE9F04107460D4614461E4664 -:10268000F4B121892846FDF7B1FB13484563802149 -:102690001248EDF762FE228910486168EDF736FEB8 -:1026A00022890E490D20F1F751FE207A0C4948701D -:1026B00008468068401C88602046F7F7A1FA08E0C9 -:1026C0003EB90020074948732846F8F7C3FFBDE824 -:1026D000F0810020FBE700002CC40120A4D90120D8 -:1026E00098D801206CC401202DE9F04107460D4621 -:1026F00014461E46F4B121892846FDF777FB13489E -:10270000856380211248EDF728FE22891048616810 -:10271000EDF7FCFD22890E490E20F1F717FE207A15 -:102720000C49487008468068401C88602046F7F7CE -:1027300067FA08E03EB90020074988732846F8F791 -:1027400089FFBDE8F0810020FBE700002CC40120D8 -:1027500030DB012024DA01206CC401202DE9F04196 -:1027600007460D4614461E46F4B121892846FDF75A -:102770003DFB1348C56380211248EDF7EEFD228929 -:1027800010486168EDF7C2FD22890E490F20F1F76C -:10279000DDFD207A0C49487008468068401C88603E -:1027A0002046F7F72DFA08E03EB900200749C87324 -:1027B0002846F8F74FFFBDE8F0810020FBE7000056 -:1027C0002CC40120BCDC0120B0DB01206CC4012042 -:1027D0002DE9F04107460D4614461E460CB32189EB -:1027E0002846FDF703FB1448456080211348EDF7A8 -:1027F000B4FD228911486168EDF788FD22890F49EF -:102800000120F1F7A3FD217A0D4880F88D11D0F851 -:102810009401401C0A49C1F894012046F7F7F0F9E9 -:1028200008E03EB90020074948702846F8F712FF33 -:10283000BDE8F0810020FBE72CC4012014C7012073 -:102840007CC401206CC401202DE9F04107460D46EF -:1028500014461E460CB321892846FDF7C7FA1448D2 -:10286000856080211348EDF778FD22891148616861 -:10287000EDF74CFD22890F490220F1F767FD217A1F -:102880000D4880F81913D0F82003401C0A49C1F8FC -:1028900020032046F7F7B4F908E03EB900200749C5 -:1028A00088702846F8F7D6FEBDE8F0810020FBE7E7 -:1028B0002CC40120A0C801207CC401206CC40120CC -:1028C0002DE9F04107460D4614461E460CB32189FA -:1028D0002846FDF78BFA1448C56080211348EDF7B0 -:1028E0003CFD228911486168EDF710FD22890F49EE -:1028F0000320F1F72BFD217A0D4880F8A514D0F8BC -:10290000AC04401C0A49C1F8AC042046F7F778F93A -:1029100008E03EB900200749C8702846F8F79AFE3B -:10292000BDE8F0810020FBE72CC401202CCA012067 -:102930007CC401206CC401202DE9F04107460D46FE -:1029400014461E460CB321892846FDF74FFA144859 -:10295000056180211348EDF700FD22891148616867 -:10296000EDF7D4FC22890F490420F1F7EFFC217A1E -:102970000D4880F83116D0F83806401C0A49C1F8D5 -:1029800038062046F7F73CF908E03EB90020074931 -:1029900008712846F8F75EFEBDE8F0810020FBE7ED -:1029A0002CC40120B8CB01207CC401206CC40120C0 -:1029B0002DE9F04107460D4614461E460CB3218909 -:1029C0002846FDF713FA1448456180211348EDF7B6 -:1029D000C4FC228911486168EDF798FC22890F49EF -:1029E0000520F1F7B3FC217A0D4880F8BD17D0F827 -:1029F000C407401C0A49C1F8C4072046F7F700F98C -:102A000008E03EB90020074948712846F8F722FE41 -:102A1000BDE8F0810020FBE72CC4012044CD01205B -:102A20007CC401206CC401202DE9F04107460D460D -:102A300014461E460CB321892846FDF7D7F91448E1 -:102A4000856180211348EDF788FC2289114861686F -:102A5000EDF75CFC22890F490620F1F777FC217A1B -:102A60000D4880F84919D0F85009401C0A49C1F8AE -:102A700050092046F7F7C4F808E03EB9002007499E -:102A800088712846F8F7E6FDBDE8F0810020FBE7F5 -:102A90002CC40120D0CE01207CC401206CC40120B4 -:102AA0002DE9F04107460D4614461E460CB3218918 -:102AB0002846FDF79BF91448C56180211348EDF7BE -:102AC0004CFC228911486168EDF720FC22890F49EE -:102AD0000720F1F73BFC217A0D4880F8D51AD0F891 -:102AE000DC0A401C0A49C1F8DC0A2046F7F788F8DE -:102AF00008E03EB900200749C8712846F8F7AAFD4A -:102B0000BDE8F0810020FBE72CC401205CD001204F -:102B10007CC401206CC401202DE9F04107460D461C -:102B200014461E460CB321892846FDF75FF9144868 -:102B3000056280211348EDF710FC22891148616875 -:102B4000EDF7E4FB22890F490820F1F7FFFB217A1A -:102B50000D4880F8611CD0F8680C401C0A49C1F887 -:102B6000680C2046F7F74CF808E03EB9002007490A -:102B700008722846F8F76EFDBDE8F0810020FBE7FB -:102B80002CC40120E8D101207CC401206CC40120A8 +:10252000FCB121892846FDF761FC80211248EDF7B6 +:1025300014FF228910486168EDF7E8FE22890E49F0 +:102540000920F1F703FF217A0C4880F8ED1DD0F83F +:10255000F40D401C0949C1F8F40D2046F7F750FB73 +:1025600008E03EB90020064948722846F9F772F89B +:10257000BDE8F0810020FBE774D301207CC401207A +:102580006CC401202DE9F04107460D4614461E4655 +:10259000FCB121892846FDF729FC80211248EDF77E +:1025A000DCFE228910486168EDF7B0FE22890E49F1 +:1025B0000A20F1F7CBFE217A0C4880F8791FD0F879 +:1025C000800F401C0949C1F8800F2046F7F718FB1F +:1025D00008E03EB90020064988722846F9F73AF823 +:1025E000BDE8F0810020FBE700D501207CC401207C +:1025F0006CC401202DE9F04107460D4614461E46E5 +:10260000E4B121892846FDF7F1FB80211148EDF75F +:10261000A4FE22890F486168EDF778FE22890D49F2 +:102620000B20F1F793FE207A0B494870084680682A +:10263000401C88602046F7F7E3FA08E03EB9002026 +:102640000649C8722846F9F705F8BDE8F081002070 +:10265000FBE700008CD6012080D501206CC401204E +:102660002DE9F04107460D4614461E46E4B1218986 +:102670002846FDF7BBFB80211148EDF76EFE22894D +:102680000F486168EDF742FE22890D490C20F1F7F1 +:102690005DFE207A0B49487008468068401C8860BF +:1026A0002046F7F7ADFA08E03EB900200649087366 +:1026B0002846F8F7CFFFBDE8F0810020FBE70000D7 +:1026C00018D801200CD701206CC401202DE9F0415D +:1026D00007460D4614461E46E4B121892846FDF7FB +:1026E00085FB80211148EDF738FE22890F4861688B +:1026F000EDF70CFE22890D490D20F1F727FE207A17 +:102700000B49487008468068401C88602046F7F7EF +:1027100077FA08E03EB90020064948732846F8F7E2 +:1027200099FFBDE8F0810020FBE70000A4D901205B +:1027300098D801206CC401202DE9F04107460D46D0 +:1027400014461E46E4B121892846FDF74FFB80213F +:102750001148EDF702FE22890F486168EDF7D6FDBA +:1027600022890D490E20F1F7F1FD207A0B494870BE +:1027700008468068401C88602046F7F741FA08E068 +:102780003EB90020064988732846F8F763FFBDE884 +:10279000F0810020FBE7000030DB012024DA01207B +:1027A0006CC401202DE9F04107460D4614461E4633 +:1027B000E4B121892846FDF719FB80211148EDF786 +:1027C000CCFD22890F486168EDF7A0FD22890D49F3 +:1027D0000F20F1F7BBFD207A0B494870084680684E +:1027E000401C88602046F7F70BFA08E03EB900204D +:1027F0000649C8732846F8F72DFFBDE8F081002090 +:10280000FBE70000BCDC0120B0DB01206CC4012030 +:102810002DE9F04107460D4614461E46FCB12189BC +:102820002846FDF7E3FA80211248EDF796FD22894C +:1028300010486168EDF76AFD22890E490120F1F721 +:1028400085FD217A0C4880F88D11D0F89401401C48 +:102850000949C1F894012046F7F7D2F908E03EB9DA +:102860000020064948702846F8F7F4FEBDE8F081DC +:102870000020FBE714C701207CC401206CC40120A8 +:102880002DE9F04107460D4614461E46FCB121894C +:102890002846FDF7ABFA80211248EDF75EFD22894C +:1028A00010486168EDF732FD22890E490220F1F7E8 +:1028B0004DFD217A0C4880F81913D0F82003401CF4 +:1028C0000949C1F820032046F7F79AF908E03EB914 +:1028D0000020064988702846F8F7BCFEBDE8F08164 +:1028E0000020FBE7A0C801207CC401206CC40120AB +:1028F0002DE9F04107460D4614461E46FCB12189DC +:102900002846FDF773FA80211248EDF726FD22894B +:1029100010486168EDF7FAFC22890E490320F1F7AF +:1029200015FD217A0C4880F8A514D0F8AC04401CA1 +:102930000949C1F8AC042046F7F762F908E03EB94E +:1029400000200649C8702846F8F784FEBDE8F081EB +:102950000020FBE72CCA01207CC401206CC40120AC +:102960002DE9F04107460D4614461E46FCB121896B +:102970002846FDF73BFA80211248EDF7EEFC22894C +:1029800010486168EDF7C2FC22890E490420F1F776 +:10299000DDFC217A0C4880F83116D0F83806401C4E +:1029A0000949C1F838062046F7F72AF908E03EB988 +:1029B0000020064908712846F8F74CFEBDE8F08172 +:1029C0000020FBE7B8CB01207CC401206CC40120AF +:1029D0002DE9F04107460D4614461E46FCB12189FB +:1029E0002846FDF703FA80211248EDF7B6FC22894C +:1029F00010486168EDF78AFC22890E490520F1F73D +:102A0000A5FC217A0C4880F8BD17D0F8C407401CFB +:102A10000949C1F8C4072046F7F7F2F808E03EB9C3 +:102A20000020064948712846F8F714FEBDE8F081F9 +:102A30000020FBE744CD01207CC401206CC40120B0 +:102A40002DE9F04107460D4614461E46FCB121898A +:102A50002846FDF7CBF980211248EDF77EFC22894C +:102A600010486168EDF752FC22890E490620F1F703 +:102A70006DFC217A0C4880F84919D0F85009401CA7 +:102A80000949C1F850092046F7F7BAF808E03EB9FD +:102A90000020064988712846F8F7DCFDBDE8F08182 +:102AA0000020FBE7D0CE01207CC401206CC40120B3 +:102AB0002DE9F04107460D4614461E46FCB121891A +:102AC0002846FDF793F980211248EDF746FC22894C +:102AD00010486168EDF71AFC22890E490720F1F7CA +:102AE00035FC217A0C4880F8D51AD0F8DC0A401C55 +:102AF0000949C1F8DC0A2046F7F782F808E03EB938 +:102B000000200649C8712846F8F7A4FDBDE8F08109 +:102B10000020FBE75CD001207CC401206CC40120B4 +:102B20002DE9F04107460D4614461E46FCB12189A9 +:102B30002846FDF75BF980211248EDF70EFC22894B +:102B400010486168EDF7E2FB22890E490820F1F791 +:102B5000FDFB217A0C4880F8611CD0F8680C401C01 +:102B60000949C1F8680C2046F7F74AF808E03EB971 +:102B70000020064908722846F8F76CFDBDE8F08190 +:102B80000020FBE7E8D101207CC401206CC40120B7 :102B900038B504460D46F4F701FE1748046017489F :102BA000056006211648F8F701F900280AD000BF91 :102BB00000BF14A340F261221EA127A0F0F7F0FF8E diff --git a/User/application/src/tcpserverc.c b/User/application/src/tcpserverc.c index 02dd175..83e31e0 100644 --- a/User/application/src/tcpserverc.c +++ b/User/application/src/tcpserverc.c @@ -33,8 +33,7 @@ static err_t tcpecho_recv_hart1(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, if (p != NULL) { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART1] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART1].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART1].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART1, hart_uart[TCP_HART1].tx_data, p->tot_len); @@ -56,8 +55,7 @@ static err_t tcpecho_recv_hart2(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART2] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART2].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART2].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART2, hart_uart[TCP_HART2].tx_data, p->tot_len); @@ -79,8 +77,7 @@ static err_t tcpecho_recv_hart3(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART3] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART3].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART3].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART3, hart_uart[TCP_HART3].tx_data, p->tot_len); @@ -102,8 +99,7 @@ static err_t tcpecho_recv_hart4(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART4] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART4].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART4].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART4, hart_uart[TCP_HART4].tx_data, p->tot_len); @@ -125,8 +121,7 @@ static err_t tcpecho_recv_hart5(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART5] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART5].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART5].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART5, hart_uart[TCP_HART5].tx_data, p->tot_len); @@ -148,8 +143,7 @@ static err_t tcpecho_recv_hart6(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART6] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART6].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART6].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART6, hart_uart[TCP_HART6].tx_data, p->tot_len); @@ -171,8 +165,7 @@ static err_t tcpecho_recv_hart7(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART7] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART7].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART7].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART7, hart_uart[TCP_HART7].tx_data, p->tot_len); @@ -194,8 +187,7 @@ static err_t tcpecho_recv_hart8(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART8] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART8].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART8].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART8, hart_uart[TCP_HART8].tx_data, p->tot_len); @@ -217,8 +209,7 @@ static err_t tcpecho_recv_hart9(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART9] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART9].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART9].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART9, hart_uart[TCP_HART9].tx_data, p->tot_len); @@ -240,8 +231,7 @@ static err_t tcpecho_recv_hart10(void *arg, struct tcp_pcb *tpcb, struct pbuf *p { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART10] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART10].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART10].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART10, hart_uart[TCP_HART10].tx_data, p->tot_len); @@ -263,8 +253,7 @@ static err_t tcpecho_recv_hart11(void *arg, struct tcp_pcb *tpcb, struct pbuf *p { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART11] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART11].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART11].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART11, hart_uart[TCP_HART11].tx_data, p->tot_len); @@ -286,8 +275,7 @@ static err_t tcpecho_recv_hart12(void *arg, struct tcp_pcb *tpcb, struct pbuf *p { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART12] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART12].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART12].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART12, hart_uart[TCP_HART12].tx_data, p->tot_len); @@ -309,8 +297,7 @@ static err_t tcpecho_recv_hart13(void *arg, struct tcp_pcb *tpcb, struct pbuf *p { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART13] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART13].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART13].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART13, hart_uart[TCP_HART13].tx_data, p->tot_len); @@ -332,8 +319,7 @@ static err_t tcpecho_recv_hart14(void *arg, struct tcp_pcb *tpcb, struct pbuf *p { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART14] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART14].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART14].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART14, hart_uart[TCP_HART14].tx_data, p->tot_len); @@ -355,8 +341,7 @@ static err_t tcpecho_recv_hart15(void *arg, struct tcp_pcb *tpcb, struct pbuf *p { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART15] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART15].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART15].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART15, hart_uart[TCP_HART15].tx_data, p->tot_len); @@ -378,8 +363,7 @@ static err_t tcpecho_recv_hart16(void *arg, struct tcp_pcb *tpcb, struct pbuf *p { /* 更新窗口*/ - tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_hart[TCP_HART16] = tpcb; // 直接赋值 + tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 memset(hart_uart[TCP_HART16].tx_data, 0, TCP_TRANSMIT_MAX); memcpy(hart_uart[TCP_HART16].tx_data, (int *)p->payload, p->tot_len); ch438_send_data(TCP_HART16, hart_uart[TCP_HART16].tx_data, p->tot_len); @@ -406,7 +390,6 @@ static err_t tcpecho_recv_control(void *arg, struct tcp_pcb *tpcb, struct pbuf * { /* 更新窗口*/ tcp_recved(tpcb, p->tot_len); // 读取数据的控制块 得到所有数据的长度 - server_pcb_control = tpcb; // 直接赋值 memcpy(tcp_rx_data, (int *)p->payload, p->tot_len); rx_data_len = p->tot_len; /*1. 对接收的数据做异或校验、帧头帧尾判断,校验失败返回信息,校验通过继续下一步、校验数据从帧头后面到校验位结束*/ @@ -463,6 +446,7 @@ static err_t tcpecho_accept_hart1(void *arg, struct tcp_pcb *newpcb, err_t err) // 形参的数量和类型必须一致 { tcp_recv(newpcb, tcpecho_recv_hart1); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART1] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART1] = 1; return ERR_OK; } @@ -470,6 +454,7 @@ static err_t tcpecho_accept_hart2(void *arg, struct tcp_pcb *newpcb, err_t err) // 形参的数量和类型必须一致 { tcp_recv(newpcb, tcpecho_recv_hart2); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART2] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART2] = 1; return ERR_OK; } @@ -478,6 +463,7 @@ static err_t tcpecho_accept_hart3(void *arg, struct tcp_pcb *newpcb, err_t err) // 形参的数量和类型必须一致 { tcp_recv(newpcb, tcpecho_recv_hart3); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART3] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART3] = 1; return ERR_OK; } @@ -486,6 +472,7 @@ static err_t tcpecho_accept_hart4(void *arg, struct tcp_pcb *newpcb, err_t err) // 形参的数量和类型必须一致 { tcp_recv(newpcb, tcpecho_recv_hart4); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART4] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART4] = 1; return ERR_OK; } @@ -494,6 +481,7 @@ static err_t tcpecho_accept_hart5(void *arg, struct tcp_pcb *newpcb, err_t err) // 形参的数量和类型必须一致 { tcp_recv(newpcb, tcpecho_recv_hart5); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART5] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART5] = 1; return ERR_OK; } @@ -502,6 +490,7 @@ static err_t tcpecho_accept_hart6(void *arg, struct tcp_pcb *newpcb, err_t err) // 形参的数量和类型必须一致 { tcp_recv(newpcb, tcpecho_recv_hart6); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART6] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART6] = 1; return ERR_OK; } @@ -510,6 +499,7 @@ static err_t tcpecho_accept_hart7(void *arg, struct tcp_pcb *newpcb, err_t err) // 形参的数量和类型必须一致 { tcp_recv(newpcb, tcpecho_recv_hart7); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART7] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART7] = 1; return ERR_OK; } @@ -518,12 +508,14 @@ static err_t tcpecho_accept_hart8(void *arg, struct tcp_pcb *newpcb, err_t err) // 形参的数量和类型必须一致 { tcp_recv(newpcb, tcpecho_recv_hart8); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART8] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART8] = 1; return ERR_OK; } static err_t tcpecho_accept_hart9(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_hart9); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART9] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART9] = 1; return ERR_OK; } @@ -531,36 +523,42 @@ static err_t tcpecho_accept_hart9(void *arg, struct tcp_pcb *newpcb, err_t err) static err_t tcpecho_accept_hart10(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_hart10); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART10] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART10] = 1; return ERR_OK; } static err_t tcpecho_accept_hart11(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_hart11); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART11] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART11] = 1; return ERR_OK; } static err_t tcpecho_accept_hart12(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_hart12); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART12] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART12] = 1; return ERR_OK; } static err_t tcpecho_accept_hart13(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_hart13); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART13] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART13] = 1; return ERR_OK; } static err_t tcpecho_accept_hart14(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_hart14); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART14] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART14] = 1; return ERR_OK; } static err_t tcpecho_accept_hart15(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_hart15); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART15] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART15] = 1; return ERR_OK; @@ -568,6 +566,7 @@ static err_t tcpecho_accept_hart15(void *arg, struct tcp_pcb *newpcb, err_t err) static err_t tcpecho_accept_hart16(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_hart16); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_hart[TCP_HART16] = newpcb; // 直接赋值 tcp_echo_flags[TCP_HART16] = 1; return ERR_OK; } @@ -575,6 +574,7 @@ static err_t tcpecho_accept_hart16(void *arg, struct tcp_pcb *newpcb, err_t err) static err_t tcpecho_accept_control(void *arg, struct tcp_pcb *newpcb, err_t err) // 由于这个函数是*tcp_accept_fn类型的 { tcp_recv(newpcb, tcpecho_recv_control); // 当收到数据时,回调用户自己写的tcpecho_recv + server_pcb_control = newpcb; // 直接赋值 tcp_echo_flags_control = 1; return ERR_OK; }