From 9d1d571a8647689e135003f8657bca570425d9c3 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Fri, 14 Apr 2023 20:48:27 +0800 Subject: [PATCH] update --- app/MDK-ARM/app.uvguix.h_zha | 42 ++++---------- app/MDK-ARM/app.uvoptx | 38 +++++++----- app/MDK-ARM/app.uvprojx | 13 +++-- dep/libiflytop_micro | 2 +- src/device_io_service.cpp | 119 ++++++++++++++++++++++++++++++++++++++ src/device_io_service.hpp | 57 ++++++++++++++++++ src/libtmcimpl.cpp | 28 +++++++++ src/libtmcimpl.hpp | 34 +++++++++++ src/port.cpp | 134 ------------------------------------------- src/port.hpp | 64 --------------------- src/umain.cpp | 35 ++++++----- 11 files changed, 307 insertions(+), 259 deletions(-) create mode 100644 src/device_io_service.cpp create mode 100644 src/device_io_service.hpp create mode 100644 src/libtmcimpl.cpp create mode 100644 src/libtmcimpl.hpp delete mode 100644 src/port.cpp delete mode 100644 src/port.hpp diff --git a/app/MDK-ARM/app.uvguix.h_zha b/app/MDK-ARM/app.uvguix.h_zha index 4d3b3b0..774a4dd 100644 --- a/app/MDK-ARM/app.uvguix.h_zha +++ b/app/MDK-ARM/app.uvguix.h_zha @@ -6,7 +6,7 @@
### uVision Project, (C) Keil Software
- D:\workspace\project_boditech_vidas_a8000\Incubator_control_system\dep\libiflytop_micro\stm32\component\tmp117 + D:\workspace\project_boditech_vidas_a8000\Incubator_control_system\src @@ -110,8 +110,8 @@ 0 - 3617 - 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000019000000180000000100000056443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF64443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C4D444B2D41524D5C737461727475705F73746D33326634303778782E730000000015737461727475705F73746D33326634303778782E7300000000FFDC7800FFFFFFFF7D443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C69635C544D4334333631415C544D4334333631412E63000000000A544D4334333631412E6300000000BECEA100FFFFFFFF74443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C68656C706572735C4352432E6300000000054352432E6300000000F0A0A100FFFFFFFF79443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C72616D705C4C696E65617252616D70312E63000000000D4C696E65617252616D70312E6300000000BCA8E100FFFFFFFF78443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C72616D705C4C696E65617252616D702E63000000000C4C696E65617252616D702E63000000009CC1B600FFFFFFFF66443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D6334333631412E637070000000000C746D6334333631412E63707000000000F7B88600FFFFFFFF50443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C756D61696E2E6370700000000009756D61696E2E63707000000000D9ADC200FFFFFFFF4F443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C706F72742E6370700000000008706F72742E63707000000000A5C2D700FFFFFFFF77443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C2E63000000000F73746D3332663478785F68616C2E6300000000B3A6BE00FFFFFFFF7C443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F756172742E63000000001473746D3332663478785F68616C5F756172742E6300000000EAD6A300FFFFFFFF66443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D6334333631412E687070000000000C746D6334333631412E68707000000000F6FA7D00FFFFFFFF5E443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C436F72655C5372635C73746D3332663478785F69742E63000000000E73746D3332663478785F69742E6300000000B5E99D00FFFFFFFF65443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D63323136302E637070000000000B746D63323136302E637070000000005FC3CF00FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C69635C544D43323136305C544D43323136302E630000000009544D43323136302E6300000000C1838300FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F7370692E63000000001373746D3332663478785F68616C5F7370692E6300000000CACAD500FFFFFFFF77443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C68656C706572735C4D6163726F732E6800000000084D6163726F732E6800000000C5D4F200FFFFFFFF27433A5C4B65696C5F76355C41524D5C41524D43435C696E636C7564655C66756E6374696F6E616C000000000A66756E6374696F6E616C00000000FFDC7800FFFFFFFF6A443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C636F6D6D6F6E5C7A7369676E616C2E687070000000000B7A7369676E616C2E68707000000000BECEA100FFFFFFFF7D443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C73746D33325F68616C5F7265735F6D616E616765722E637070000000001973746D33325F68616C5F7265735F6D616E616765722E63707000000000F0A0A100FFFFFFFF4F443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C706F72742E6870700000000008706F72742E68707000000000BCA8E100FFFFFFFF6B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C62617369632E63000000000762617369632E63000000009CC1B600FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F63616E2E63000000001373746D3332663478785F68616C5F63616E2E6300000000F7B88600FFFFFFFF92443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C636F6D706F6E656E745C69666C79746F705F63616E5F736C6176655F76315C69666C79746F705F63616E5F736C6176652E637070000000001569666C79746F705F63616E5F736C6176652E63707000000000D9ADC200FFFFFFFF79443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C636F6D706F6E656E745C746D703131375C746D703131372E637070000000000A746D703131372E63707000000000A5C2D700FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004F010000660000009006000000030000 + 3407 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000017000000160000000100000056443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C436F72655C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF64443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C4D444B2D41524D5C737461727475705F73746D33326634303778782E730000000015737461727475705F73746D33326634303778782E7300000000FFDC7800FFFFFFFF7D443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C69635C544D4334333631415C544D4334333631412E63000000000A544D4334333631412E6300000000BECEA100FFFFFFFF74443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C68656C706572735C4352432E6300000000054352432E6300000000F0A0A100FFFFFFFF79443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C72616D705C4C696E65617252616D70312E63000000000D4C696E65617252616D70312E6300000000BCA8E100FFFFFFFF78443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C72616D705C4C696E65617252616D702E63000000000C4C696E65617252616D702E63000000009CC1B600FFFFFFFF66443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D6334333631412E637070000000000C746D6334333631412E63707000000000F7B88600FFFFFFFF50443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C756D61696E2E6370700000000009756D61696E2E63707000000000D9ADC200FFFFFFFF77443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C2E63000000000F73746D3332663478785F68616C2E6300000000A5C2D700FFFFFFFF7C443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F756172742E63000000001473746D3332663478785F68616C5F756172742E6300000000B3A6BE00FFFFFFFF66443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D6334333631412E687070000000000C746D6334333631412E68707000000000EAD6A300FFFFFFFF5E443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C436F72655C5372635C73746D3332663478785F69742E63000000000E73746D3332663478785F69742E6300000000F6FA7D00FFFFFFFF65443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C7372635C69635C746D63323136302E637070000000000B746D63323136302E63707000000000B5E99D00FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C69635C544D43323136305C544D43323136302E630000000009544D43323136302E63000000005FC3CF00FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F7370692E63000000001373746D3332663478785F68616C5F7370692E6300000000C1838300FFFFFFFF77443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C68656C706572735C4D6163726F732E6800000000084D6163726F732E6800000000CACAD500FFFFFFFF27433A5C4B65696C5F76355C41524D5C41524D43435C696E636C7564655C66756E6374696F6E616C000000000A66756E6374696F6E616C00000000C5D4F200FFFFFFFF6A443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C636F6D6D6F6E5C7A7369676E616C2E687070000000000B7A7369676E616C2E68707000000000FFDC7800FFFFFFFF7D443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C73746D33325F68616C5F7265735F6D616E616765722E637070000000001973746D33325F68616C5F7265735F6D616E616765722E63707000000000BECEA100FFFFFFFF6B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C62617369632E63000000000762617369632E6300000000F0A0A100FFFFFFFF7B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C447269766572735C53544D3332463478785F48414C5F4472697665725C5372635C73746D3332663478785F68616C5F63616E2E63000000001373746D3332663478785F68616C5F63616E2E6300000000BCA8E100FFFFFFFF92443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C636F6D706F6E656E745C69666C79746F705F63616E5F736C6176655F76315C69666C79746F705F63616E5F736C6176652E637070000000001569666C79746F705F63616E5F736C6176652E637070000000009CC1B600FFFFFFFF79443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C636F6D706F6E656E745C746D703131375C746D703131372E637070000000000A746D703131372E63707000000000F7B88600FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000004F010000660000009006000000030000 @@ -530,7 +530,7 @@ 0 16 - 03000000040300008D0600004A050000 + 03000000040300008D060000A7030000 16 @@ -1150,7 +1150,7 @@ 0 16 - 0300000066000000480100002D010000 + 030000006600000048010000D0020000 16 @@ -1170,7 +1170,7 @@ 0 16 - 03000000040300008D0600004A050000 + 03000000040300008D060000A7030000 16 @@ -1190,7 +1190,7 @@ 0 16 - 03000000040300008D0600004A050000 + 03000000040300008D060000A7030000 16 @@ -1250,7 +1250,7 @@ 0 16 - 03000000040300008D0600004A050000 + 03000000040300008D060000A7030000 16 @@ -1270,7 +1270,7 @@ 0 16 - 03000000040300008D0600004A050000 + 03000000040300008D060000A7030000 16 @@ -1799,7 +1799,7 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000D9000000DC040000DD000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D600000066000000DC040000F0000000D60000004F000000DC040000D90000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF060400004F0000000A04000013020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000A04000066000000DC0400002A0200000A0400004F000000DC0400001302000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF4B0100004F0000004F010000E90200000100000002000010040000000100000078FFFFFFED060000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000004B0100005D010000000000004F0000004B010000E90200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000FF010000DC0400000302000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000001A020000DC040000B80200000000000003020000DC040000A102000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF6E0200000302000072020000A102000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000E902000090060000ED020000010000000100001004000000010000009CFCFFFF02000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000006101000090060000D703000000000000ED02000090060000C00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000D9000000DC040000DD000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D600000066000000DC040000F0000000D60000004F000000DC040000D90000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF060400004F0000000A04000013020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000A04000066000000DC0400002A0200000A0400004F000000DC0400001302000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFF4B0100004F0000004F010000E90200000100000002000010040000000100000078FFFFFFED060000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000000000000660000004B01000000030000000000004F0000004B010000E90200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000FF010000DC0400000302000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000001A020000DC040000B80200000000000003020000DC040000A102000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF6E0200000302000072020000A102000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000E902000090060000ED020000010000000100001004000000010000009CFCFFFF02000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000403000090060000D703000000000000ED02000090060000C00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 @@ -1838,7 +1838,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -3603,7 +3603,7 @@ 0 100 - 24 + 22 ../Core/Src/main.c 0 @@ -3677,15 +3677,6 @@ 0 - ..\..\src\port.cpp - 3 - 37 - 47 - 1 - - 0 - - ../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c 0 315 @@ -3785,15 +3776,6 @@ 0 - ..\..\src\port.hpp - 36 - 14 - 36 - 1 - - 0 - - ..\..\dep\libiflytop_micro\stm32\basic\basic.c 0 1 diff --git a/app/MDK-ARM/app.uvoptx b/app/MDK-ARM/app.uvoptx index cd85c5b..85dab03 100644 --- a/app/MDK-ARM/app.uvoptx +++ b/app/MDK-ARM/app.uvoptx @@ -913,8 +913,8 @@ 0 0 0 - ..\..\src\port.cpp - port.cpp + ..\..\src\umain.cpp + umain.cpp 0 0 @@ -925,8 +925,20 @@ 0 0 0 - ..\..\src\umain.cpp - umain.cpp + ..\..\src\device_io_service.cpp + device_io_service.cpp + 0 + 0 + + + 6 + 41 + 8 + 0 + 0 + 0 + ..\..\src\libtmcimpl.cpp + libtmcimpl.cpp 0 0 @@ -940,7 +952,7 @@ 0 7 - 41 + 42 1 0 0 @@ -952,7 +964,7 @@ 7 - 42 + 43 1 0 0 @@ -964,7 +976,7 @@ 7 - 43 + 44 1 0 0 @@ -976,7 +988,7 @@ 7 - 44 + 45 1 0 0 @@ -988,7 +1000,7 @@ 7 - 45 + 46 8 0 0 @@ -1000,7 +1012,7 @@ 7 - 46 + 47 1 0 0 @@ -1012,7 +1024,7 @@ 7 - 47 + 48 1 0 0 @@ -1024,7 +1036,7 @@ 7 - 48 + 49 8 0 0 @@ -1036,7 +1048,7 @@ 7 - 49 + 50 8 0 0 diff --git a/app/MDK-ARM/app.uvprojx b/app/MDK-ARM/app.uvprojx index 5279e0a..55a79de 100644 --- a/app/MDK-ARM/app.uvprojx +++ b/app/MDK-ARM/app.uvprojx @@ -1211,14 +1211,19 @@ src - port.cpp + umain.cpp 8 - ..\..\src\port.cpp + ..\..\src\umain.cpp - umain.cpp + device_io_service.cpp 8 - ..\..\src\umain.cpp + ..\..\src\device_io_service.cpp + + + libtmcimpl.cpp + 8 + ..\..\src\libtmcimpl.cpp diff --git a/dep/libiflytop_micro b/dep/libiflytop_micro index fb44265..bf2d8c1 160000 --- a/dep/libiflytop_micro +++ b/dep/libiflytop_micro @@ -1 +1 @@ -Subproject commit fb4426557e187f3f0ce98d8220a995f27f6258ad +Subproject commit bf2d8c1c5d3ab028b17d61e3dd6906231115bd82 diff --git a/src/device_io_service.cpp b/src/device_io_service.cpp new file mode 100644 index 0000000..097bad8 --- /dev/null +++ b/src/device_io_service.cpp @@ -0,0 +1,119 @@ +#include "device_io_service.hpp" + +extern "C" { +int fputc(int ch, FILE *stream) { + uint8_t c = ch; + HAL_UART_Transmit(&DEBUG_UART, &c, 1, 100); + return ch; +} +} + +using namespace iflytop; +namespace iflytop { +DeviceIoService deviceIoService; +} +/******************************************************************************* + * 帕尔贴驱动电路 * + *******************************************************************************/ +void DeviceIoService::peltier_cold_ctr_pwm(int pwm) { + __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pwm); + HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); +} +// PB0 HOT_CTR_PWM0 +void DeviceIoService::peltier_hot_ctr_pwm(int pwm) { + __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, pwm); + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); +} +void DeviceIoService::peltier_set_pwm(int pwm) { + /** + * @brief + * + * 待机状态 + * HOT_CTR_PWM0(AL) = 0 + * HOT_CTR(AH) = 0 + * COLD_CTR_PWM0(BL) = 0 + * COLD_CTR(BH) = 0 + * 加热时 + * HOT_CTR_PWM0(AL) = 1(PWM) + * HOT_CTR(AH) = 0 + * COLD_CTR_PWM0(BL) = 0 + * COLD_CTR(BH) = 1(IO/保持) + * 制冷时 + * HOT_CTR_PWM0(AL) = 0 + * HOT_CTR(AH) = 1(IO/保持) + * COLD_CTR_PWM0(BL) = 1(PWM) + * COLD_CTR(BH) = 0 + */ + pwm = pwm * 1000; + if (pwm == 0) { + peltier_hot_ctr_pwm(0); /*HOT_CTR_PWM0*/ + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); /*HOT_CTR*/ + peltier_cold_ctr_pwm(0); /*COLD_CTR_PWM0*/ + HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_RESET); /*COLD_CTR*/ + } else if (pwm > 0) { + peltier_hot_ctr_pwm(pwm); /*HOT_CTR_PWM0*/ + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); /*HOT_CTR*/ + peltier_cold_ctr_pwm(0); /*COLD_CTR_PWM0*/ + HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_SET); /*COLD_CTR*/ + } else { + peltier_hot_ctr_pwm(0); /*HOT_CTR_PWM0*/ + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); /*HOT_CTR*/ + peltier_cold_ctr_pwm(-pwm); /*COLD_CTR_PWM0*/ + HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_RESET); /*COLD_CTR*/ + } +} +/******************************************************************************* + * tmc芯片驱动相关 * + *******************************************************************************/ +void DeviceIoService::tmc_motor_spi_select(int channel, bool state) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, state ? GPIO_PIN_SET : GPIO_PIN_RESET); } +void DeviceIoService::tmc_motor_spi_write_and_read(int channel, uint8_t *data, size_t length) { + if (channel == MOTOR_1_TMC4361A_CHANNEL) { + tmc_motor_spi_select(channel, false); + sleepus(10); + HAL_SPI_TransmitReceive(&hspi1, data, data, length, 1000); + tmc_motor_spi_select(channel, true); + } +} +void DeviceIoService::tmc_extern_clk_enable() { +#if 1 + /** + * @brief TMC使用的外部时钟在stm32cubemx中已经进行配置,输出时钟为16MHZ + * 配置可以参考https://iflytop1.feishu.cn/wiki/wikcnog3hFm6dGFLMRksnhLb7Aw + */ +#endif +} + +void port_tmc_nFREEZE_pin_set_state(uint8_t channel, bool state) { + if (channel == MOTOR_1_TMC4361A_CHANNEL) { + HAL_GPIO_WritePin(GPIOE, GPIO_PIN_12, state ? GPIO_PIN_SET : GPIO_PIN_RESET); + } +} +void port_tmc_ENN_pin_set_state(uint8_t channel, bool state) { + if (channel == MOTOR_1_TMC2160_CHANNEL) { + HAL_GPIO_WritePin(GPIOE, GPIO_PIN_11, state ? GPIO_PIN_SET : GPIO_PIN_RESET); + } +} +void port_tmc_nRESET_pin_set_state(uint8_t channel, bool state) {} +void port_tmc_extern_clk_enable() { +#if 1 + /** + * @brief TMC使用的外部时钟在stm32cubemx中已经进行配置,输出时钟为16MHZ + * 配置可以参考https://iflytop1.feishu.cn/wiki/wikcnog3hFm6dGFLMRksnhLb7Aw + */ +#else + // HAL_TIM_Base_Start(&TMC4361A_CLK_TIMER); + HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_4); +#endif +} + +void DeviceIoService::tmc_nFREEZE_pin_set_state(uint8_t channel, bool state) { + if (channel == MOTOR_1_TMC4361A_CHANNEL) { + HAL_GPIO_WritePin(GPIOE, GPIO_PIN_12, state ? GPIO_PIN_SET : GPIO_PIN_RESET); + } +} +void DeviceIoService::tmc_ENN_pin_set_state(uint8_t channel, bool state) { + if (channel == MOTOR_1_TMC2160_CHANNEL) { + HAL_GPIO_WritePin(GPIOE, GPIO_PIN_11, state ? GPIO_PIN_SET : GPIO_PIN_RESET); + } +} +void DeviceIoService::tmc_nRESET_pin_set_state(uint8_t channel, bool state) {} diff --git a/src/device_io_service.hpp b/src/device_io_service.hpp new file mode 100644 index 0000000..be9861c --- /dev/null +++ b/src/device_io_service.hpp @@ -0,0 +1,57 @@ +#pragma once +#include +#include + +#include "libiflytop_micro/stm32/basic/basic.h" +#include "libiflytop_micro\stm32\basic\iflytop_micro_os.hpp" +#include "libtrinamic/src/ic/tmc2160.hpp" +#include "libtrinamic\src\ic\tmc4361A.hpp" +#include "main.h" +#include "project_board.hpp" +#include "spi.h" +#include "tim.h" +#include "usart.h" + +namespace iflytop { +using namespace std; + +class DeviceIoService : public IflytopMicroOS { + private: + /* data */ + public: + DeviceIoService(/* args */) {} + ~DeviceIoService() {} + + /******************************************************************************* + * 帕尔贴驱动电路 * + *******************************************************************************/ + void peltier_set_pwm(int pwm); + /******************************************************************************* + * tmc芯片驱动相关 * + *******************************************************************************/ + void tmc_motor_spi_write_and_read(int channel, uint8_t *data, size_t length); + void tmc_extern_clk_enable(); + void tmc_nFREEZE_pin_set_state(uint8_t channel, bool state); + void tmc_ENN_pin_set_state(uint8_t channel, bool state); + void tmc_nRESET_pin_set_state(uint8_t channel, bool state); + + /******************************************************************************* + * OVERRIDE IflytopMicroOS * + *******************************************************************************/ + virtual void sleepMS(int ms) { HAL_Delay(ms); }; + virtual uint32_t hasPassedMS(uint32_t ticket) { return sys_haspassedms(ticket); }; + virtual uint32_t getTicket() { return HAL_GetTick(); }; + virtual uint32_t getNowMS() { return HAL_GetTick(); }; + virtual void sleepus(uint32_t us) { sys_delay_us(&DELAY_US_TIMER, us); } + + private: + // PE9 COLD_CTR_PWM0 + void peltier_cold_ctr_pwm(int pwm); + // PB0 HOT_CTR_PWM0 + void peltier_hot_ctr_pwm(int pwm); + + void tmc_motor_spi_select(int channel, bool state); +}; + +extern DeviceIoService deviceIoService; +} // namespace iflytop \ No newline at end of file diff --git a/src/libtmcimpl.cpp b/src/libtmcimpl.cpp new file mode 100644 index 0000000..371b5f2 --- /dev/null +++ b/src/libtmcimpl.cpp @@ -0,0 +1,28 @@ +#pragma once +#include "libtmcimpl.hpp" + +#include "device_io_service.hpp" +namespace iflytop { +using namespace std; +/******************************************************************************* + * TMC4361AImpl * + *******************************************************************************/ +void TMC4361AImpl::setResetPinState(bool state) { deviceIoService.tmc_nRESET_pin_set_state(m_channel, state); }; +void TMC4361AImpl::setFREEZEPinState(bool state) { deviceIoService.tmc_nFREEZE_pin_set_state(m_channel, state); }; +void TMC4361AImpl::setENNPinState(bool state) { deviceIoService.tmc_ENN_pin_set_state(m_channel, state); }; +bool TMC4361AImpl::getTargetReachedPinState() { return false; }; +void TMC4361AImpl::sleepus(int32_t us) { deviceIoService.sleepus(us); }; +void TMC4361AImpl::readWriteArray(uint8_t *data, size_t length) { // + deviceIoService.tmc_motor_spi_write_and_read(m_channel, data, length); +}; +/******************************************************************************* + * TMC2160Impl * + *******************************************************************************/ +void TMC2160Impl::initialize(uint8_t channel, TMC4361A *tmc4361) { + m_tmc4361 = tmc4361; + TMC2160::initialize(channel); +} +void TMC2160Impl::setENNPinState(bool state) { deviceIoService.tmc_ENN_pin_set_state(m_channel, state); }; +void TMC2160Impl::sleepus(int32_t us) { deviceIoService.sleepus(us); }; +void TMC2160Impl::readWriteArray(uint8_t *data, size_t length) { m_tmc4361->readWriteCover(data, length); }; +} // namespace iflytop \ No newline at end of file diff --git a/src/libtmcimpl.hpp b/src/libtmcimpl.hpp new file mode 100644 index 0000000..b1eb381 --- /dev/null +++ b/src/libtmcimpl.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include "libiflytop_micro/stm32/basic/basic.h" +#include "libtrinamic/src/ic/tmc2160.hpp" +#include "libtrinamic\src\ic\tmc4361A.hpp" +namespace iflytop { +using namespace std; +/** + * @brief 对接TMC4361和硬件的接口 + */ +class TMC4361AImpl : public TMC4361A { + protected: + virtual void setResetPinState(bool state); + virtual void setFREEZEPinState(bool state); + virtual void setENNPinState(bool state); + virtual bool getTargetReachedPinState(); + virtual void sleepus(int32_t us); + virtual void readWriteArray(uint8_t *data, size_t length); +}; +/** + * @brief 对接TMC2160和硬件的接口 + */ +class TMC2160Impl : public TMC2160 { + TMC4361A *m_tmc4361; + + public: + void initialize(uint8_t channel, TMC4361A *tmc4361); + + protected: + virtual void setENNPinState(bool state); + virtual void sleepus(int32_t us); + virtual void readWriteArray(uint8_t *data, size_t length); +}; +} // namespace iflytop \ No newline at end of file diff --git a/src/port.cpp b/src/port.cpp deleted file mode 100644 index 6ebba1d..0000000 --- a/src/port.cpp +++ /dev/null @@ -1,134 +0,0 @@ -#include -#include - -#include "libiflytop_micro/stm32/basic/basic.h" -#include "libtrinamic/src/ic/tmc2160.hpp" -#include "libtrinamic\src\ic\tmc4361A.hpp" -#include "main.h" -#include "project_board.hpp" -#include "spi.h" -#include "tim.h" -#include "usart.h" - -/** - * @brief printf 串口重定向 - * - * @param ch - * @param stream - * @return int - */ -extern "C" { -int fputc(int ch, FILE *stream) { - uint8_t c = ch; - HAL_UART_Transmit(&DEBUG_UART, &c, 1, 100); - return ch; -} -} - -namespace iflytop { -void port_do_debug_light_state() { - static uint32_t lastprocess = 0; - if (sys_haspassedms(lastprocess) > 300) { - lastprocess = HAL_GetTick(); - HAL_GPIO_TogglePin(DEBUG_LIGHT_PORT, DEBUG_LIGHT_PIN); - } -} -void port_delay_us(uint32_t us) { sys_delay_us(&DELAY_US_TIMER, us); } -void port_spi_cs_select(bool select) { // - HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, select ? GPIO_PIN_SET : GPIO_PIN_RESET); -} -void port_tmc_motor_spi_write_and_read(int channel, uint8_t *data, size_t length) { - // - if (channel == MOTOR_1_TMC4361A_CHANNEL) { - port_spi_cs_select(false); - port_delay_us(1); - HAL_SPI_TransmitReceive(&hspi1, data, data, length, 1000); - port_spi_cs_select(true); - } -} -void port_tmc_nFREEZE_pin_set_state(uint8_t channel, bool state) { - if (channel == MOTOR_1_TMC4361A_CHANNEL) { - HAL_GPIO_WritePin(GPIOE, GPIO_PIN_12, state ? GPIO_PIN_SET : GPIO_PIN_RESET); - } -} -void port_tmc_ENN_pin_set_state(uint8_t channel, bool state) { - if (channel == MOTOR_1_TMC2160_CHANNEL) { - HAL_GPIO_WritePin(GPIOE, GPIO_PIN_11, state ? GPIO_PIN_SET : GPIO_PIN_RESET); - } -} -void port_tmc_nRESET_pin_set_state(uint8_t channel, bool state) {} -void port_tmc_extern_clk_enable() { -#if 1 - /** - * @brief TMC使用的外部时钟在stm32cubemx中已经进行配置,输出时钟为16MHZ - * 配置可以参考https://iflytop1.feishu.cn/wiki/wikcnog3hFm6dGFLMRksnhLb7Aw - */ -#else - // HAL_TIM_Base_Start(&TMC4361A_CLK_TIMER); - HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_4); -#endif -} -#if 0 -int32_t port_tmc4361_get_version(uint8_t channel) { - int value; - uint8_t data[5]; - data[0] = 0x7f; - port_tmc_motor_spi_write_and_read(&data[0], 5); - value = ((uint32_t)data[1] << 24) | ((uint32_t)data[2] << 16) | (data[3] << 8) | data[4]; - return value; -} -#endif - -// PE9 COLD_CTR_PWM0 -static void port_peltier_cold_ctr_pwm(int pwm) { - __HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, pwm); - HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); -} -// PB0 HOT_CTR_PWM0 -static void port_peltier_hot_ctr_pwm(int pwm) { - __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, pwm); - HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); -} - -void port_peltier_set_pwm(int pwm) { - /** - * @brief - * - * 待机状态 - * HOT_CTR_PWM0(AL) = 0 - * HOT_CTR(AH) = 0 - * COLD_CTR_PWM0(BL) = 0 - * COLD_CTR(BH) = 0 - * 加热时 - * HOT_CTR_PWM0(AL) = 1(PWM) - * HOT_CTR(AH) = 0 - * COLD_CTR_PWM0(BL) = 0 - * COLD_CTR(BH) = 1(IO/保持) - * 制冷时 - * HOT_CTR_PWM0(AL) = 0 - * HOT_CTR(AH) = 1(IO/保持) - * COLD_CTR_PWM0(BL) = 1(PWM) - * COLD_CTR(BH) = 0 - */ - - pwm = pwm * 1000; - - if (pwm == 0) { - port_peltier_hot_ctr_pwm(0); /*HOT_CTR_PWM0*/ - HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); /*HOT_CTR*/ - port_peltier_cold_ctr_pwm(0); /*COLD_CTR_PWM0*/ - HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_RESET); /*COLD_CTR*/ - } else if (pwm > 0) { - port_peltier_hot_ctr_pwm(pwm); /*HOT_CTR_PWM0*/ - HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); /*HOT_CTR*/ - port_peltier_cold_ctr_pwm(0); /*COLD_CTR_PWM0*/ - HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_SET); /*COLD_CTR*/ - } else { - port_peltier_hot_ctr_pwm(0); /*HOT_CTR_PWM0*/ - HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); /*HOT_CTR*/ - port_peltier_cold_ctr_pwm(-pwm); /*COLD_CTR_PWM0*/ - HAL_GPIO_WritePin(GPIOE, GPIO_PIN_10, GPIO_PIN_RESET); /*COLD_CTR*/ - } -} - -} // namespace iflytop diff --git a/src/port.hpp b/src/port.hpp deleted file mode 100644 index 508034b..0000000 --- a/src/port.hpp +++ /dev/null @@ -1,64 +0,0 @@ -#include -#include - -#include "libiflytop_micro\stm32\basic\iflytop_micro_os.hpp" -namespace iflytop { -void port_do_debug_light_state(); -void port_delay_us(uint32_t us); - -/******************************************************************************* - * IflytopMicroOS对接 * - *******************************************************************************/ -class IflytopMicroOSImpl : public IflytopMicroOS { - public: - virtual void sleepMS(int ms) { HAL_Delay(ms); }; - virtual uint32_t hasPassedMS(uint32_t ticket) { return sys_haspassedms(ticket); }; - virtual uint32_t getTicket() { return HAL_GetTick(); }; - virtual uint32_t getNowMS() { return HAL_GetTick(); }; -}; - -/******************************************************************************* - * 帕尔贴驱动电路 * - *******************************************************************************/ -void port_peltier_set_pwm(int pwm); -/******************************************************************************* - * tmc芯片驱动相关 * - *******************************************************************************/ -void port_tmc_motor_spi_write_and_read(int channel, uint8_t *data, size_t length); -void port_tmc_extern_clk_enable(); -void port_tmc_nFREEZE_pin_set_state(uint8_t channel, bool state); -void port_tmc_ENN_pin_set_state(uint8_t channel, bool state); -void port_tmc_nRESET_pin_set_state(uint8_t channel, bool state); -int32_t port_tmc4361_get_version(uint8_t channel); -/** - * @brief 对接TMC4361和硬件的接口 - */ -class TMC4361AImpl : public TMC4361A { - protected: - virtual void setResetPinState(bool state) { port_tmc_nRESET_pin_set_state(m_channel, state); }; - virtual void setFREEZEPinState(bool state) { port_tmc_nFREEZE_pin_set_state(m_channel, state); }; - virtual void setENNPinState(bool state) { port_tmc_ENN_pin_set_state(m_channel, state); }; - virtual bool getTargetReachedPinState() { return false; }; - virtual void sleepus(int32_t us) { port_delay_us(us); }; - virtual void readWriteArray(uint8_t *data, size_t length) { // - port_tmc_motor_spi_write_and_read(m_channel, data, length); - }; -}; -/** - * @brief 对接TMC2160和硬件的接口 - */ -class TMC2160Impl : public TMC2160 { - TMC4361A *m_tmc4361; - - public: - void initialize(uint8_t channel, TMC4361A *tmc4361) { - m_tmc4361 = tmc4361; - TMC2160::initialize(channel); - } - - protected: - virtual void setENNPinState(bool state) { port_tmc_ENN_pin_set_state(m_channel, state); }; - virtual void sleepus(int32_t us) { port_delay_us(us); }; - virtual void readWriteArray(uint8_t *data, size_t length) { m_tmc4361->readWriteCover(data, length); }; -}; -} // namespace iflytop \ No newline at end of file diff --git a/src/umain.cpp b/src/umain.cpp index ce0e67b..463d7c5 100644 --- a/src/umain.cpp +++ b/src/umain.cpp @@ -1,10 +1,11 @@ #include #include +#include "device_io_service.hpp" #include "libiflytop_micro\stm32\basic\basic.h" +#include "libtmcimpl.hpp" #include "libtrinamic/src/ic/tmc2160.hpp" #include "libtrinamic\src\ic\tmc4361A.hpp" -#include "port.hpp" #include "project_board.hpp" // #include "i2c.h" @@ -17,11 +18,11 @@ using namespace iflytop; using namespace std; class Main { public: - TMC4361AImpl tmc4361motor1; - TMC2160Impl tmc2160motor1; - TMP117 tmp117[4]; - IflytopCanSlave canSlaveService; - IflytopMicroOSImpl os; + TMC4361AImpl tmc4361motor1; + TMC2160Impl tmc2160motor1; + TMP117 tmp117[4]; + IflytopCanSlave canSlaveService; + IflytopMicroOS *os; bool canOnRxDataFlag; @@ -42,9 +43,17 @@ class Main { */ void testCanSlaveTxAndRx(); void testTmp117(); + void do_debug_light_state() { + static uint32_t lastprocess = 0; + if (sys_haspassedms(lastprocess) > 300) { + lastprocess = HAL_GetTick(); + HAL_GPIO_TogglePin(DEBUG_LIGHT_PORT, DEBUG_LIGHT_PIN); + } + } }; void Main::initialize() { + os = &deviceIoService; /******************************************************************************* * 温度传感器初始化 * *******************************************************************************/ @@ -56,7 +65,7 @@ void Main::initialize() { /******************************************************************************* * 电机初始化 * *******************************************************************************/ - port_tmc_extern_clk_enable(); + deviceIoService.tmc_extern_clk_enable(); // 4361初始化 TMC4361AImpl::TMC4361AConfig_t *tmc4361aconfig = TMC4361AImpl::createDeafultTMC4361AConfig(); tmc4361aconfig->base_config.fs_per_rev = 200; @@ -91,7 +100,7 @@ void Main::initialize() { * CANSLAVEService初始化 * *******************************************************************************/ IflytopCanSlave::iflytop_can_slave_config_t *config = canSlaveService.createDefaultConfig(DEVICE_ID); - canSlaveService.initialize(&os, config); + canSlaveService.initialize(os, config); canSlaveService.onCanRxData.connect(this, &Main::onCanRxData); canSlaveService.activateRxIT(); } @@ -102,7 +111,7 @@ void Main::main(int argc, char const *argv[]) { // port_peltier_set_pwm(0); initialize(); while (true) { - port_do_debug_light_state(); + do_debug_light_state(); // testCanSlaveTxAndRx(); // testTmp117(); } @@ -119,8 +128,8 @@ void Main::testCanSlaveTxAndRx() { { static uint32_t lastcall; static uint8_t tx[8] = {1, 2, 3, 4, 5, 6, 7, 8}; - if (os.hasPassedMS(lastcall) > 1000) { - lastcall = os.getTicket(); + if (os->hasPassedMS(lastcall) > 1000) { + lastcall = os->getTicket(); canSlaveService.translate(0x01, tx, 8, 2); if (canSlaveService.getLastTransmitStatus() == HAL_OK) { ZLOGI(TAG, "send ok"); @@ -148,8 +157,8 @@ void Main::testCanSlaveTxAndRx() { void Main::testTmp117() { static uint32_t lastcall; - if (os.hasPassedMS(lastcall) > 1000) { - lastcall = os.getTicket(); + if (os->hasPassedMS(lastcall) > 1000) { + lastcall = os->getTicket(); for (size_t i = 0; i < 4; i++) { float temp = tmp117[i].getTemperature(); if (tmp117[i].getLastCallStatus() == HAL_OK) {