From 7f9d68b64b7f21a6ef37f1f3e62d097eb3b6de82 Mon Sep 17 00:00:00 2001 From: zhaohe Date: Wed, 19 Apr 2023 11:37:04 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/MDK-ARM/app.uvguix.h_zha | 154 +++------------- app/MDK-ARM/app.uvoptx | 66 ++----- app/MDK-ARM/app.uvprojx | 19 +- dep/libiflytop_micro | 2 +- src/board/device_io_service.cpp | 199 --------------------- src/board/device_io_service.hpp | 83 --------- src/board/fan_state_monitor.cpp | 4 +- src/board/hardware.cpp | 242 +++++++++++++++++++++++--- src/board/hardware.hpp | 72 +++++++- src/board/libtmcimpl.cpp | 4 - src/board/libtmcimpl.hpp | 6 - src/lncubator_rotating_control_service.cpp | 6 +- src/lncubator_rotating_control_service.hpp | 13 +- src/lncubator_temperature_control_service.cpp | 4 +- src/lncubator_temperature_control_service.hpp | 1 - src/umain.cpp | 2 - 16 files changed, 340 insertions(+), 537 deletions(-) delete mode 100644 src/board/device_io_service.cpp delete mode 100644 src/board/device_io_service.hpp delete mode 100644 src/board/libtmcimpl.cpp delete mode 100644 src/board/libtmcimpl.hpp diff --git a/app/MDK-ARM/app.uvguix.h_zha b/app/MDK-ARM/app.uvguix.h_zha index fda7856..b153bf4 100644 --- a/app/MDK-ARM/app.uvguix.h_zha +++ b/app/MDK-ARM/app.uvguix.h_zha @@ -110,8 +110,8 @@ 0 - 2167 - 0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000E0000000C000000010000005B443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C626F6172645C6C6962746D63696D706C2E637070000000000E6C6962746D63696D706C2E63707000000000C5D4F200FFFFFFFF70443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C6C6E63756261746F725F74656D70657261747572655F636F6E74726F6C5F736572766963652E63707000000000296C6E63756261746F725F74656D70657261747572655F636F6E74726F6C5F736572766963652E63707000000000FFDC7800FFFFFFFF70443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C6C6E63756261746F725F74656D70657261747572655F636F6E74726F6C5F736572766963652E68707000000000296C6E63756261746F725F74656D70657261747572655F636F6E74726F6C5F736572766963652E68707000000000BECEA100FFFFFFFF92443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C636F6D706F6E656E745C69666C79746F705F63616E5F736C6176655F76315C69666C79746F705F63616E5F736C6176652E687070000000001569666C79746F705F63616E5F736C6176652E68707000000000F0A0A100FFFFFFFF6F443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C7A7369676E616C2E687070000000000B7A7369676E616C2E68707000000000BCA8E100FFFFFFFF59443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C626F6172645C68617264776172652E687070000000000C68617264776172652E687070000000009CC1B600FFFFFFFF64443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C4D444B2D41524D5C737461727475705F73746D33326634303778782E730000000015737461727475705F73746D33326634303778782E7300000000F7B88600FFFFFFFF50443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C756D61696E2E6370700000000009756D61696E2E63707000000000D9ADC200FFFFFFFF59443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C626F6172645C68617264776172652E637070000000000C68617264776172652E63707000000000A5C2D700FFFFFFFF7D443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C69627472696E616D69635C49464C59544F502D544D432D4150495C746D635C69635C544D4334333631415C544D4334333631412E63000000000A544D4334333631412E6300000000B3A6BE00FFFFFFFF5E443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6170705C436F72655C5372635C73746D3332663478785F69742E63000000000E73746D3332663478785F69742E6300000000EAD6A300FFFFFFFF62443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C626F6172645C6465766963655F696F5F736572766963652E63707000000000156465766963655F696F5F736572766963652E63707000000000F6FA7D00FFFFFFFF7D443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C73746D33325F68616C5F7265735F6D616E616765722E637070000000001973746D33325F68616C5F7265735F6D616E616765722E63707000000000B5E99D00FFFFFFFF62443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C626F6172645C66616E5F73746174655F6D6F6E69746F722E637070000000001566616E5F73746174655F6D6F6E69746F722E637070000000005FC3CF00FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000FC0100006600000090060000C6020000 + 435 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000059443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C7372635C626F6172645C68617264776172652E637070000000000C68617264776172652E63707000000000C5D4F200FFFFFFFF71443A5C776F726B73706163655C70726F6A6563745F626F6469746563685F76696461735F61383030305C496E63756261746F725F636F6E74726F6C5F73797374656D5C6465705C6C696269666C79746F705F6D6963726F5C73746D33325C62617369635C73746D33325F68616C2E637070000000000D73746D33325F68616C2E63707000000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000FC010000660000009006000042020000 @@ -134,7 +134,7 @@ 16 - 0AFBFFFF7C00000010FFFFFF06010000 + D600000066000000DC040000F0000000 @@ -150,7 +150,7 @@ 0 16 - 0300000066000000F501000096020000 + 0300000066000000F501000012020000 16 @@ -170,7 +170,7 @@ 0 16 - 0300000066000000F501000096020000 + 0300000066000000F501000012020000 16 @@ -450,7 +450,7 @@ 0 16 - 0300000066000000F501000096020000 + 0300000066000000F501000012020000 16 @@ -470,7 +470,7 @@ 0 16 - 0300000066000000F501000096020000 + 0300000066000000F501000012020000 16 @@ -490,7 +490,7 @@ 0 16 - 00000000C702000090060000C0030000 + 000000004302000090060000C0030000 16 @@ -530,7 +530,7 @@ 0 16 - 03000000CA02000039040000A7030000 + 03000000460200008D060000E0030000 16 @@ -1150,7 +1150,7 @@ 0 16 - 0300000066000000F501000076020000 + 0300000066000000F5010000D9010000 16 @@ -1170,7 +1170,7 @@ 0 16 - 03000000CA02000039040000A7030000 + 03000000460200008D060000E0030000 16 @@ -1190,7 +1190,7 @@ 0 16 - 03000000CA02000039040000A7030000 + 03000000460200008D060000E0030000 16 @@ -1250,7 +1250,7 @@ 0 16 - 03000000CA02000039040000A7030000 + 03000000460200008D060000E0030000 16 @@ -1270,7 +1270,7 @@ 0 16 - 03000000CA02000039040000A7030000 + 03000000460200008D060000E0030000 16 @@ -1799,14 +1799,14 @@ 3312 - 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000D9000000DC040000DD000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E6500200000000000000AFBFFFF7C00000010FFFFFF06010000D60000004F000000DC040000D90000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF060400004F0000000A04000013020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000003EFEFFFF7C00000010FFFFFF400200000A0400004F000000DC0400001302000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF80100004F000000FC010000AF0200000100000002000010040000000100000030FDFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C4000000739400000180001000000100000034FAFFFF7C0000002CFCFFFFBC020000000000004F000000F8010000AF0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000FF010000DC0400000302000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB0900000180008000000000000034FAFFFF3002000010FFFFFFCE0200000000000003020000DC040000A102000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF6E0200000302000072020000A102000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000AF02000090060000B30200000100000001000010040000000100000030FDFFFF96000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF010000779400000180008000000100000034FAFFFFC002000070FEFFFFCD03000000000000B302000090060000C00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 + 000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFD6000000D9000000DC040000DD000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000D600000066000000DC040000F0000000D60000004F000000DC040000D90000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF060400004F0000000A04000013020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C30000018000400000000000000A04000066000000DC0400002A0200000A0400004F000000DC0400001302000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF80100004F000000FC0100002B0200000100000002000010040000000100000030FDFFFFB5030000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F801000009020000000000004F000000F80100002B0200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF00000000FF010000DC0400000302000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000001A020000DC040000B80200000000000003020000DC040000A102000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFF6E0200000302000072020000A102000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF000000002B020000900600002F0200000100000001000010040000000100000037FDFFFF9D000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000D02000090060000D7030000000000002F02000090060000C00300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657300000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000 59392 File 2537 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -3603,129 +3603,21 @@ 0 100 - 12 - - ..\..\src\board\libtmcimpl.cpp - 8 - 1 - 2 - 1 - - 0 - - - ..\..\src\lncubator_temperature_control_service.cpp - 47 - 1 - 1 - 1 - - 0 - - - ..\..\src\lncubator_temperature_control_service.hpp - 21 - 1 - 2 - 1 - - 0 - - - ..\..\dep\libiflytop_micro\stm32\component\iflytop_can_slave_v1\iflytop_can_slave.hpp - 0 - 44 - 63 - 1 - - 0 - - - ..\..\dep\libiflytop_micro\stm32\basic\zsignal.hpp - 0 - 77 - 78 - 1 - - 0 - - - ..\..\src\board\hardware.hpp - 0 - 1 - 27 - 1 - - 0 - - - startup_stm32f407xx.s - 0 - 167 - 174 - 1 - - 0 - - - ..\..\src\umain.cpp - 0 - 8 - 9 - 1 - - 0 - + 1 ..\..\src\board\hardware.cpp 0 - 109 - 118 - 1 - - 0 - - - ..\..\dep\libtrinamic\IFLYTOP-TMC-API\tmc\ic\TMC4361A\TMC4361A.c - 0 - 248 - 260 + 350 + 380 1 0 - ../Core/Src/stm32f4xx_it.c - 0 - 81 - 89 - 1 - - 0 - - - ..\..\src\board\device_io_service.cpp - 3 - 16 - 29 - 1 - - 0 - - - ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal_res_manager.cpp - 14 - 265 - 297 - 1 - - 0 - - - ..\..\src\board\fan_state_monitor.cpp - 0 - 1 - 21 + ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal.cpp + 27 + 346 + 369 1 0 diff --git a/app/MDK-ARM/app.uvoptx b/app/MDK-ARM/app.uvoptx index 54a488e..a3d6f61 100644 --- a/app/MDK-ARM/app.uvoptx +++ b/app/MDK-ARM/app.uvoptx @@ -203,7 +203,7 @@ 0 0 1 - ..\..\src\board\device_io_service.cpp + D:\workspace\project_boditech_vidas_a8000\Incubator_control_system\src\board\device_io_service.cpp \\app\../../src/board/device_io_service.cpp\142 @@ -897,8 +897,8 @@ 0 0 0 - ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal_res_manager.cpp - stm32_hal_res_manager.cpp + ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal.cpp + stm32_hal.cpp 0 0 @@ -953,18 +953,6 @@ 0 0 0 - ..\..\src\board\device_io_service.cpp - device_io_service.cpp - 0 - 0 - - - 6 - 42 - 8 - 0 - 0 - 0 ..\..\src\board\fan_state_monitor.cpp fan_state_monitor.cpp 0 @@ -972,7 +960,7 @@ 6 - 43 + 42 8 0 0 @@ -982,18 +970,6 @@ 0 0 - - 6 - 44 - 8 - 0 - 0 - 0 - ..\..\src\board\libtmcimpl.cpp - libtmcimpl.cpp - 0 - 0 - @@ -1004,7 +980,7 @@ 0 7 - 45 + 43 1 0 0 @@ -1016,7 +992,7 @@ 7 - 46 + 44 1 0 0 @@ -1028,7 +1004,7 @@ 7 - 47 + 45 1 0 0 @@ -1040,7 +1016,7 @@ 7 - 48 + 46 1 0 0 @@ -1052,7 +1028,7 @@ 7 - 49 + 47 8 0 0 @@ -1064,7 +1040,7 @@ 7 - 50 + 48 1 0 0 @@ -1076,7 +1052,7 @@ 7 - 51 + 49 1 0 0 @@ -1088,7 +1064,7 @@ 7 - 52 + 50 8 0 0 @@ -1100,7 +1076,7 @@ 7 - 53 + 51 8 0 0 @@ -1112,7 +1088,7 @@ 7 - 54 + 52 8 0 0 @@ -1124,19 +1100,7 @@ 7 - 55 - 8 - 0 - 0 - 0 - ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal_utils.cpp - stm32_hal_utils.cpp - 0 - 0 - - - 7 - 56 + 53 1 0 0 diff --git a/app/MDK-ARM/app.uvprojx b/app/MDK-ARM/app.uvprojx index 3020990..c23f246 100644 --- a/app/MDK-ARM/app.uvprojx +++ b/app/MDK-ARM/app.uvprojx @@ -1196,9 +1196,9 @@ ..\..\dep\libiflytop_micro\stm32\basic\basic.c - stm32_hal_res_manager.cpp + stm32_hal.cpp 8 - ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal_res_manager.cpp + ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal.cpp iflytop_can_slave.cpp @@ -1221,11 +1221,6 @@ ..\..\src\lncubator_temperature_control_service.cpp - device_io_service.cpp - 8 - ..\..\src\board\device_io_service.cpp - - fan_state_monitor.cpp 8 ..\..\src\board\fan_state_monitor.cpp @@ -1235,11 +1230,6 @@ 8 ..\..\src\board\hardware.cpp - - libtmcimpl.cpp - 8 - ..\..\src\board\libtmcimpl.cpp - @@ -1296,11 +1286,6 @@ ..\..\dep\libiflytop_micro\stm32\basic\zsignal.cpp - stm32_hal_utils.cpp - 8 - ..\..\dep\libiflytop_micro\stm32\basic\stm32_hal_utils.cpp - - pid_ctrl.c 1 ..\..\dep\libiflytop_micro\stm32\component\pid\pid_ctrl.c diff --git a/dep/libiflytop_micro b/dep/libiflytop_micro index 160fa66..ffc78e8 160000 --- a/dep/libiflytop_micro +++ b/dep/libiflytop_micro @@ -1 +1 @@ -Subproject commit 160fa668ad40f8abac72d2634ee54fa4f3ad9188 +Subproject commit ffc78e8dc163fe8baea44325f3aeaca9ee05c146 diff --git a/src/board/device_io_service.cpp b/src/board/device_io_service.cpp deleted file mode 100644 index e19efe2..0000000 --- a/src/board/device_io_service.cpp +++ /dev/null @@ -1,199 +0,0 @@ -#include "device_io_service.hpp" - -#include "libiflytop_micro/stm32/basic/stm32_hal_utils.hpp" -#include "libiflytop_micro\stm32\basic\stm32_hal_res_manager.hpp" -#include "project_board.hpp" -#define TAG "DEVICE_IO_SERVICE" -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 {} -void DeviceIoService::initialize() { // - // STM32_HAL.connect(this, &DeviceIoService::onGPIO_EXTI_Callback); -} - -void DeviceIoService::onGPIO_EXTI_Callback(uint16_t gpioNum) { - /** - * @brief 赋予盘零位光电触发 - */ - if (gpioNum == TMC_HOME_REF_GPIO_PIN) { - if (STM32_HAL_GPIO_IS_THIS_PIN_TRIGGER_IRQ(TMC_HOME_REF_GPIO)) { - onHomeRefSwitch.trigger(); - } - } -} - -void DeviceIoService::debug_light_init() { - STM32_HAL.gpioInit(DEBUG_LIGHT_PORT, DEBUG_LIGHT_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); -} - -void DeviceIoService::fanInit(int freq) { - STM32_HAL.setPWMFreq(&htim2, freq); // fan0->fan3 - STM32_HAL.setPWMFreq(&htim4, freq); // fan4 - STM32_HAL.setPWMFreq(&htim8, freq); // fan5 - - // fan0 fan1 fan2 fan3 - STM32_HAL.gpioInit(GPIOC, GPIO_PIN_0, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); - // fan4 - STM32_HAL.gpioInit(GPIOC, GPIO_PIN_2, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); - // fan5 - STM32_HAL.gpioInit(GPIOC, GPIO_PIN_3, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); -} - -void DeviceIoService::fanSetDutyCycle(int fanIndex, uint16_t dutyCycle) { - if (fanIndex > 5) { - while (1) { - ZLOGE(TAG, "fanIndex is out of range!"); - } - } - - if (fanIndex <= 3) { - STM32_HAL.setPWMDuty(&htim2, TIM_CHANNEL_2, dutyCycle); - m_fanState[0] = dutyCycle > 0; - m_fanState[1] = dutyCycle > 0; - m_fanState[2] = dutyCycle > 0; - m_fanState[3] = dutyCycle > 0; - - if (dutyCycle > 0) { - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET); - } else { - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); - } - - } else if (fanIndex == 4) { - STM32_HAL.setPWMDuty(&htim4, TIM_CHANNEL_3, dutyCycle); - m_fanState[4] = dutyCycle > 0; - - if (dutyCycle > 0) { - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET); - } else { - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET); - } - } else if (fanIndex == 5) { - STM32_HAL.setPWMDuty(&htim8, TIM_CHANNEL_3, dutyCycle); - m_fanState[5] = dutyCycle > 0; - - if (dutyCycle > 0) { - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET); - } else { - HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET); - } - } -} -bool *DeviceIoService::fanGetPowerState(int fanIndex) { - if (fanIndex >= 5) { - while (1) { - ZLOGE(TAG, "fanIndex is out of range!"); - } - } - return &m_fanState[fanIndex]; -} -void DeviceIoService::fanSetState0to3(uint16_t dutyCycle) { fanSetDutyCycle(0, dutyCycle); } -void DeviceIoService::fanSetState4(uint16_t dutyCycle) { fanSetDutyCycle(4, dutyCycle); } -void DeviceIoService::fanSetState5(uint16_t dutyCycle) { fanSetDutyCycle(5, dutyCycle); } - -/******************************************************************************* - * 帕尔贴驱动电路 * - *******************************************************************************/ -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_init() { // - STM32_HAL.gpioInit(GPIOB, GPIO_PIN_1, GPIO_MODE_AF_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); - STM32_HAL.gpioInit(GPIOE, GPIO_PIN_10, GPIO_MODE_AF_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); -} -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_init() { - STM32_HAL.gpioInit( // - GPIOA, GPIO_PIN_4, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_SET); - STM32_HAL.gpioInit( // - GPIOE, GPIO_PIN_12, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_SET); - STM32_HAL.gpioInit( // - GPIOE, GPIO_PIN_11, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_SET); -} - -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 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) {} -void DeviceIoService::tmc_subic_ENN_pin_set_state(uint8_t channel, bool state) { - if (channel == MOTOR_1_TMC4361A_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) {} - -void DeviceIoService::home_ref_switch_init() { // - STM32_HAL.gpioInitAsEXIT(TMC_HOME_REF_GPIO_PORT, TMC_HOME_REF_GPIO_PIN, GPIO_NOPULL, TMC_HOME_REF_GPIO_IRQ_MODE); -} diff --git a/src/board/device_io_service.hpp b/src/board/device_io_service.hpp deleted file mode 100644 index 765272f..0000000 --- a/src/board/device_io_service.hpp +++ /dev/null @@ -1,83 +0,0 @@ -#pragma once -#include -#include - -#include "board/project_board.hpp" -#include "libiflytop_micro/stm32/basic/basic.h" -#include "libiflytop_micro\stm32\basic\iflytop_micro_os.hpp" -#include "libiflytop_micro\stm32\basic\stm32_hal_res_manager.hpp" -#include "libtrinamic/src/ic/tmc2160.hpp" -#include "libtrinamic\src\ic\tmc4361A.hpp" -#include "main.h" -#include "spi.h" -#include "tim.h" -#include "usart.h" - -namespace iflytop { -using namespace std; - -class DeviceIoService : public IflytopMicroOS { - private: - /* data */ - bool m_fanState[6]; - ZSLOT1(DeviceIoService, onGPIO_EXTI_Callback, uint16_t); // GPIO中断回调 - - public: - DeviceIoService(/* args */) {} - ~DeviceIoService() {} - - void initialize(); - - /******************************************************************************* - * 调试指示灯初始化 * - *******************************************************************************/ - - void debug_light_init(); - - /******************************************************************************* - * 风扇控制 * - *******************************************************************************/ - void fanInit(int freq); - void fanSetDutyCycle(int fanIndex, uint16_t dutyCycle); - bool *fanGetPowerState(int fanIndex); - void fanSetState0to3(uint16_t dutyCycle); - void fanSetState4(uint16_t dutyCycle); - void fanSetState5(uint16_t dutyCycle); - /******************************************************************************* - * 帕尔贴驱动电路 * - *******************************************************************************/ - void peltier_init(); - void peltier_set_pwm(int pwm); - /******************************************************************************* - * tmc芯片驱动相关 * - *******************************************************************************/ - void tmc_init(); - 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_subic_ENN_pin_set_state(uint8_t channel, bool state); - void tmc_nRESET_pin_set_state(uint8_t channel, bool state); - - ZSignal0 onHomeRefSwitch; - void home_ref_switch_init(); - - /******************************************************************************* - * 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); -}; - -} // namespace iflytop \ No newline at end of file diff --git a/src/board/fan_state_monitor.cpp b/src/board/fan_state_monitor.cpp index 33b2a5d..0574794 100644 --- a/src/board/fan_state_monitor.cpp +++ b/src/board/fan_state_monitor.cpp @@ -1,7 +1,7 @@ #include "fan_state_monitor.hpp" #include "libiflytop_micro/stm32/basic/basic.h" -#include "libiflytop_micro\stm32\basic/stm32_hal_res_manager.hpp" +#include "libiflytop_micro\stm32\basic/stm32_hal.hpp" using namespace iflytop; @@ -18,7 +18,7 @@ void FanStateMonitor::initialize(IflytopMicroOS* os, GPIO_TypeDef* FB_GPIOx, uin m_lastFanState = false; m_fanError = false; - STM32_HAL.gpioInitAsInput(FB_GPIOx, FB_GPIO_Pin); + STM32_HAL::gpioInitAsInput(FB_GPIOx, FB_GPIO_Pin); m_lastPinState = HAL_GPIO_ReadPin(m_FB_GPIOx, m_FB_GPIO_Pin); } void FanStateMonitor::doFanStateCheckPeriodicJob() { diff --git a/src/board/hardware.cpp b/src/board/hardware.cpp index 63a00ed..e82b951 100644 --- a/src/board/hardware.cpp +++ b/src/board/hardware.cpp @@ -4,24 +4,38 @@ using namespace iflytop; #define TAG "hardware" #define ENABLE_CAN 0 +extern "C" { +int fputc(int ch, FILE *stream) { + uint8_t c = ch; + HAL_UART_Transmit(&DEBUG_UART, &c, 1, 100); + return ch; +} +} int32_t Hardware::port_tmc4361_get_version(uint8_t channel) { int value; uint8_t data[5]; data[0] = 0x7f; - m_deviceIoService.tmc_motor_spi_write_and_read(channel, &data[0], 5); + tmc_motor_spi_write_and_read(channel, &data[0], 5); value = ((uint32_t)data[1] << 24) | ((uint32_t)data[2] << 16) | (data[3] << 8) | data[4]; return value; } +void Hardware::registerListener(HardwareListener *listener) { + if (listener && m_listenerNum < MAX_HARDWARE_LISTENER_NUM) { + m_listener[m_listenerNum] = listener; + m_listenerNum++; + } +} void Hardware::hardwareinit() { + STM32_HAL::regListener(this); + m_canOnRxDataFlag = false; - m_os = &m_deviceIoService; /******************************************************************************* * 调试指示灯初始化 * *******************************************************************************/ - m_deviceIoService.debug_light_init(); + debug_light_init(); /******************************************************************************* * CANSLAVEService初始化 * @@ -36,7 +50,7 @@ void Hardware::hardwareinit() { * 帕尔贴初始化 * *******************************************************************************/ #if 0 - m_deviceIoService.peltier_init(); + peltier_init(); #endif /******************************************************************************* * 温度传感器初始化 * @@ -52,8 +66,8 @@ void Hardware::hardwareinit() { * 电机初始化 * *******************************************************************************/ #if 1 - m_deviceIoService.tmc_init(); - m_deviceIoService.tmc_extern_clk_enable(); + tmc_init(); + tmc_extern_clk_enable(); // 4361初始化 TMC4361A::TMC4361AConfig_t *tmc4361aconfig = TMC4361A::createDeafultTMC4361AConfig(this); tmc4361aconfig->encoder_config.diff_enc_in_disable = false; @@ -93,7 +107,7 @@ void Hardware::hardwareinit() { * 风扇初始化 * *******************************************************************************/ #if 0 - m_deviceIoService.fanInit(1000); + fanInit(1000); /** * @brief 风扇反馈初始化 * @@ -104,12 +118,12 @@ void Hardware::hardwareinit() { * FAN4_FB_INT PC7 * FAN5_FB_INT PC10 */ - m_fanStateMonitor[0].initialize(m_os, GPIOC, GPIO_PIN_1, m_deviceIoService.fanGetPowerState(0)); - m_fanStateMonitor[1].initialize(m_os, GPIOC, GPIO_PIN_4, m_deviceIoService.fanGetPowerState(1)); - m_fanStateMonitor[2].initialize(m_os, GPIOC, GPIO_PIN_5, m_deviceIoService.fanGetPowerState(2)); - m_fanStateMonitor[3].initialize(m_os, GPIOC, GPIO_PIN_6, m_deviceIoService.fanGetPowerState(3)); - m_fanStateMonitor[4].initialize(m_os, GPIOC, GPIO_PIN_7, m_deviceIoService.fanGetPowerState(4)); - m_fanStateMonitor[5].initialize(m_os, GPIOC, GPIO_PIN_10, m_deviceIoService.fanGetPowerState(5)); + m_fanStateMonitor[0].initialize(m_os, GPIOC, GPIO_PIN_1, fanGetPowerState(0)); + m_fanStateMonitor[1].initialize(m_os, GPIOC, GPIO_PIN_4, fanGetPowerState(1)); + m_fanStateMonitor[2].initialize(m_os, GPIOC, GPIO_PIN_5, fanGetPowerState(2)); + m_fanStateMonitor[3].initialize(m_os, GPIOC, GPIO_PIN_6, fanGetPowerState(3)); + m_fanStateMonitor[4].initialize(m_os, GPIOC, GPIO_PIN_7, fanGetPowerState(4)); + m_fanStateMonitor[5].initialize(m_os, GPIOC, GPIO_PIN_10, fanGetPowerState(5)); #endif } void Hardware::periodicJob() { @@ -138,8 +152,8 @@ void Hardware::do_debug_light_state() { *******************************************************************************/ void Hardware::testTmp117() { static uint32_t lastcall; - if (m_os->hasPassedMS(lastcall) > 1000) { - lastcall = m_os->getTicket(); + if (hasPassedMS(lastcall) > 1000) { + lastcall = getTicket(); for (size_t i = 0; i < 4; i++) { float temp = tmp117[i].getTemperature(); if (tmp117[i].getLastCallStatus() == HAL_OK) { @@ -158,8 +172,8 @@ void Hardware::testCanSlaveTxAndRx() { { static uint32_t lastcall; static uint8_t tx[8] = {1, 2, 3, 4, 5, 6, 7, 8}; - if (m_os->hasPassedMS(lastcall) > 1000) { - lastcall = m_os->getTicket(); + if (hasPassedMS(lastcall) > 1000) { + lastcall = getTicket(); canSlaveService.translate(0x01, tx, 8, 2); if (canSlaveService.getLastTransmitStatus() == HAL_OK) { ZLOGI(TAG, "send ok"); @@ -184,10 +198,192 @@ void Hardware::testCanSlaveTxAndRx() { // canSlaveService.activateRxIT(); } } -void Hardware::TMC4361APort_setResetPinState(uint16_t channel, bool state) { m_deviceIoService.tmc_nRESET_pin_set_state(channel, state); } -void Hardware::TMC4361APort_setFREEZEPinState(uint16_t channel, bool state) { m_deviceIoService.tmc_nFREEZE_pin_set_state(channel, state); } -void Hardware::TMC4361APort_setENNPinState(uint16_t channel, bool state) { m_deviceIoService.tmc_ENN_pin_set_state(channel, state); } +void Hardware::TMC4361APort_setResetPinState(uint16_t channel, bool state) { tmc_nRESET_pin_set_state(channel, state); } +void Hardware::TMC4361APort_setFREEZEPinState(uint16_t channel, bool state) { tmc_nFREEZE_pin_set_state(channel, state); } +void Hardware::TMC4361APort_setENNPinState(uint16_t channel, bool state) { tmc_ENN_pin_set_state(channel, state); } bool Hardware::TMC4361APort_getTargetReachedPinState(uint16_t channel) { return false; } -void Hardware::TMC4361APort_sleepus(int32_t us) { m_os->sleepus(us); } -void Hardware::TMC4361APort_readWriteArray(uint8_t *data, size_t length) { m_deviceIoService.tmc_motor_spi_write_and_read(0, data, length); } -void Hardware::TMC4361APort_setSubICENNPinState(uint16_t channel, bool state) { m_deviceIoService.tmc_subic_ENN_pin_set_state(channel, state); } +void Hardware::TMC4361APort_sleepus(int32_t us) { sleepus(us); } +void Hardware::TMC4361APort_readWriteArray(uint8_t *data, size_t length) { tmc_motor_spi_write_and_read(0, data, length); } +void Hardware::TMC4361APort_setSubICENNPinState(uint16_t channel, bool state) { tmc_subic_ENN_pin_set_state(channel, state); } + +void Hardware::STM32_HAL_onGPIO_EXTI_Callback(uint16_t gpioNum) { + /** + * @brief 赋予盘零位光电触发 + */ + if (gpioNum == TMC_HOME_REF_GPIO_PIN) { + if (STM32_HAL_GPIO_IS_THIS_PIN_TRIGGER_IRQ(TMC_HOME_REF_GPIO)) { + for (size_t i = 0; i < m_listenerNum; i++) { + m_listener[i]->Hardware_onHomeRefSwitch(); + } + } + } +} + +void Hardware::debug_light_init() { + STM32_HAL::gpioInit(DEBUG_LIGHT_PORT, DEBUG_LIGHT_PIN, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); +} + +void Hardware::fanInit(int freq) { + STM32_HAL::setPWMFreq(&htim2, freq); // fan0->fan3 + STM32_HAL::setPWMFreq(&htim4, freq); // fan4 + STM32_HAL::setPWMFreq(&htim8, freq); // fan5 + + // fan0 fan1 fan2 fan3 + STM32_HAL::gpioInit(GPIOC, GPIO_PIN_0, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); + // fan4 + STM32_HAL::gpioInit(GPIOC, GPIO_PIN_2, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); + // fan5 + STM32_HAL::gpioInit(GPIOC, GPIO_PIN_3, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); +} + +void Hardware::fanSetDutyCycle(int fanIndex, uint16_t dutyCycle) { + if (fanIndex > 5) { + while (1) { + ZLOGE(TAG, "fanIndex is out of range!"); + } + } + + if (fanIndex <= 3) { + STM32_HAL::setPWMDuty(&htim2, TIM_CHANNEL_2, dutyCycle); + m_fanState[0] = dutyCycle > 0; + m_fanState[1] = dutyCycle > 0; + m_fanState[2] = dutyCycle > 0; + m_fanState[3] = dutyCycle > 0; + + if (dutyCycle > 0) { + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET); + } else { + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); + } + + } else if (fanIndex == 4) { + STM32_HAL::setPWMDuty(&htim4, TIM_CHANNEL_3, dutyCycle); + m_fanState[4] = dutyCycle > 0; + + if (dutyCycle > 0) { + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_SET); + } else { + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2, GPIO_PIN_RESET); + } + } else if (fanIndex == 5) { + STM32_HAL::setPWMDuty(&htim8, TIM_CHANNEL_3, dutyCycle); + m_fanState[5] = dutyCycle > 0; + + if (dutyCycle > 0) { + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_SET); + } else { + HAL_GPIO_WritePin(GPIOC, GPIO_PIN_3, GPIO_PIN_RESET); + } + } +} +bool *Hardware::fanGetPowerState(int fanIndex) { + if (fanIndex >= 5) { + while (1) { + ZLOGE(TAG, "fanIndex is out of range!"); + } + } + return &m_fanState[fanIndex]; +} +void Hardware::fanSetState0to3(uint16_t dutyCycle) { fanSetDutyCycle(0, dutyCycle); } +void Hardware::fanSetState4(uint16_t dutyCycle) { fanSetDutyCycle(4, dutyCycle); } +void Hardware::fanSetState5(uint16_t dutyCycle) { fanSetDutyCycle(5, dutyCycle); } + +/******************************************************************************* + * 帕尔贴驱动电路 * + *******************************************************************************/ +void Hardware::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 Hardware::peltier_hot_ctr_pwm(int pwm) { + __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_3, pwm); + HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3); +} +void Hardware::peltier_init() { // + STM32_HAL::gpioInit(GPIOB, GPIO_PIN_1, GPIO_MODE_AF_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); + STM32_HAL::gpioInit(GPIOE, GPIO_PIN_10, GPIO_MODE_AF_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); +} +void Hardware::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 Hardware::tmc_init() { + STM32_HAL::gpioInit( // + GPIOA, GPIO_PIN_4, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_SET); + STM32_HAL::gpioInit( // + GPIOE, GPIO_PIN_12, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_SET); + STM32_HAL::gpioInit( // + GPIOE, GPIO_PIN_11, GPIO_MODE_OUTPUT_PP, GPIO_PULLUP, GPIO_SPEED_FREQ_LOW, GPIO_PIN_SET); +} + +void Hardware::tmc_motor_spi_select(int channel, bool state) { HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, state ? GPIO_PIN_SET : GPIO_PIN_RESET); } +void Hardware::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 Hardware::tmc_extern_clk_enable() { +#if 1 + /** + * @brief TMC使用的外部时钟在stm32cubemx中已经进行配置,输出时钟为16MHZ + * 配置可以参考https://iflytop1.feishu.cn/wiki/wikcnog3hFm6dGFLMRksnhLb7Aw + */ +#endif +} +void Hardware::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 Hardware::tmc_ENN_pin_set_state(uint8_t channel, bool state) {} +void Hardware::tmc_subic_ENN_pin_set_state(uint8_t channel, bool state) { + if (channel == MOTOR_1_TMC4361A_CHANNEL) { + HAL_GPIO_WritePin(GPIOE, GPIO_PIN_11, state ? GPIO_PIN_SET : GPIO_PIN_RESET); + } +} +void Hardware::tmc_nRESET_pin_set_state(uint8_t channel, bool state) {} + +void Hardware::home_ref_switch_init() { // + STM32_HAL::gpioInitAsEXIT(TMC_HOME_REF_GPIO_PORT, TMC_HOME_REF_GPIO_PIN, GPIO_NOPULL, TMC_HOME_REF_GPIO_IRQ_MODE); +} diff --git a/src/board/hardware.hpp b/src/board/hardware.hpp index 137fd8d..64947b5 100644 --- a/src/board/hardware.hpp +++ b/src/board/hardware.hpp @@ -1,13 +1,30 @@ #pragma once -#include "board/device_io_service.hpp" #include "board/fan_state_monitor.hpp" -#include "board/libtmcimpl.hpp" +#include "board/project_board.hpp" +#include "libiflytop_micro/stm32/basic/basic.h" +#include "libiflytop_micro\stm32\basic\iflytop_micro_os.hpp" +#include "libiflytop_micro\stm32\basic\stm32_hal.hpp" #include "libiflytop_micro\stm32\component\iflytop_can_slave_v1\iflytop_can_slave.hpp" #include "libiflytop_micro\stm32\component\tmp117\tmp117.hpp" - +#include "libtrinamic/src/ic/tmc2160.hpp" +#include "libtrinamic\src\ic\tmc4361A.hpp" +#include "main.h" +#include "spi.h" +#include "tim.h" +#include "usart.h" namespace iflytop { -class Hardware : public IflytopCanSlaveListener, public TMC4361APort { +#define MAX_HARDWARE_LISTENER_NUM 5 +class HardwareListener { + public: + virtual void Hardware_OnHardwareException(){}; + virtual void Hardware_onHomeRefSwitch(){}; +}; + +class Hardware : public IflytopCanSlaveListener, // + public TMC4361APort, // + public IflytopMicroOS, // + public STM32_HAL_LISTENER { private: /* data */ @@ -16,12 +33,16 @@ class Hardware : public IflytopCanSlaveListener, public TMC4361APort { TMP117 tmp117[4]; FanStateMonitor m_fanStateMonitor[6]; IflytopCanSlave canSlaveService; - IflytopMicroOS *m_os; - DeviceIoService m_deviceIoService; + bool m_canOnRxDataFlag; - bool m_canOnRxDataFlag; + /* data */ + bool m_fanState[6]; + + HardwareListener *m_listener[MAX_HARDWARE_LISTENER_NUM]; + int m_listenerNum; public: + public: /******************************************************************************* * ListenerImpl * *******************************************************************************/ @@ -34,6 +55,8 @@ class Hardware : public IflytopCanSlaveListener, public TMC4361APort { Hardware(/* args */){}; ~Hardware(){}; + void registerListener(HardwareListener *listener); + void hardwareinit(); void periodicJob(); @@ -58,7 +81,42 @@ class Hardware : public IflytopCanSlaveListener, public TMC4361APort { virtual void TMC4361APort_readWriteArray(uint8_t *data, size_t length); virtual void TMC4361APort_setSubICENNPinState(uint16_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); } + + /******************************************************************************* + * OVERRIDE STM32_HAL_LISTENER * + *******************************************************************************/ + virtual void STM32_HAL_onGPIO_EXTI_Callback(uint16_t GPIO_Pin); + public: + void debug_light_init(); + void fanInit(int freq); + void fanSetDutyCycle(int fanIndex, uint16_t dutyCycle); + void fanSetState0to3(uint16_t dutyCycle); + void fanSetState4(uint16_t dutyCycle); + void fanSetState5(uint16_t dutyCycle); + void peltier_cold_ctr_pwm(int pwm); + void peltier_hot_ctr_pwm(int pwm); + void peltier_init(); + void peltier_set_pwm(int pwm); + void tmc_init(); + void tmc_motor_spi_select(int channel, bool state); + 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_subic_ENN_pin_set_state(uint8_t channel, bool state); + void tmc_nRESET_pin_set_state(uint8_t channel, bool state); + bool *fanGetPowerState(int fanIndex); + + void home_ref_switch_init(); }; } // namespace iflytop diff --git a/src/board/libtmcimpl.cpp b/src/board/libtmcimpl.cpp deleted file mode 100644 index 54d7dba..0000000 --- a/src/board/libtmcimpl.cpp +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -#include "libtmcimpl.hpp" - -#include "device_io_service.hpp" diff --git a/src/board/libtmcimpl.hpp b/src/board/libtmcimpl.hpp deleted file mode 100644 index 9285198..0000000 --- a/src/board/libtmcimpl.hpp +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once - -#include "board/device_io_service.hpp" -#include "libiflytop_micro/stm32/basic/basic.h" -#include "libtrinamic/src/ic/tmc2160.hpp" -#include "libtrinamic\src\ic\tmc4361A.hpp" diff --git a/src/lncubator_rotating_control_service.cpp b/src/lncubator_rotating_control_service.cpp index b7c51a8..be950f9 100644 --- a/src/lncubator_rotating_control_service.cpp +++ b/src/lncubator_rotating_control_service.cpp @@ -22,7 +22,7 @@ LncubatorRotatingControlService::~LncubatorRotatingControlService() {} void LncubatorRotatingControlService::initialize(Hardware* hardware) { // m_hardware = hardware; m_motor = &m_hardware->tmc4361motor1; - m_os = &m_hardware->m_deviceIoService; + m_os = m_hardware; m_workfinished = false; m_dowhat = kidle; m_maxVelocity = mc_default_velocity; @@ -31,13 +31,13 @@ void LncubatorRotatingControlService::initialize(Hardware* hardware) { // * @brief 电机必须工作在位置模式 */ m_motor->setMotorInPositionMode(); - hardware->m_deviceIoService.onHomeRefSwitch.connect(this, onHomeSwitchKey); + hardware->registerListener(this); } void LncubatorRotatingControlService::moveToHome() { m_dowhat = krotateToHome; m_motor->moveTo(mc_onecircle_ustep_num * 2, m_maxVelocity); } -void LncubatorRotatingControlService::onHomeSwitchKey() { +void LncubatorRotatingControlService::Hardware_onHomeRefSwitch() { /** * @brief 电机零点光电触发 */ diff --git a/src/lncubator_rotating_control_service.hpp b/src/lncubator_rotating_control_service.hpp index a8edbb1..8fcfe42 100644 --- a/src/lncubator_rotating_control_service.hpp +++ b/src/lncubator_rotating_control_service.hpp @@ -1,6 +1,6 @@ #pragma once #include "board\hardware.hpp" -#include "libiflytop_micro\stm32\basic\stm32_hal_res_manager.hpp" +#include "libiflytop_micro\stm32\basic\stm32_hal.hpp" #include "libiflytop_micro\stm32\component\state_machine\state_machine.hpp" namespace iflytop { @@ -30,7 +30,7 @@ class LncubatorRotatingControlServiceListener { virtual void OnlncubatorRotatingControlServiceJobFinished() = 0; }; -class LncubatorRotatingControlService { +class LncubatorRotatingControlService : public HardwareListener { public: typedef enum { REFPOINT_TYPE_OUTLET = 0, // 出口 @@ -65,8 +65,6 @@ class LncubatorRotatingControlService { LncubatorRotatingControlServiceListener* m_listener; private: - ZSLOT0(LncubatorRotatingControlService, onHomeSwitchKey); - public: LncubatorRotatingControlService(); ~LncubatorRotatingControlService(); @@ -89,7 +87,12 @@ class LncubatorRotatingControlService { */ void calibrationPosition(refpoint_t refpoint, uint32_t positionIndex); - void periodicJob(); + void periodicJob(); + + /******************************************************************************* + * OVERRIDE HardwareListener * + *******************************************************************************/ + virtual void Hardware_onHomeRefSwitch(); private: void doRotateToHomeJob(); diff --git a/src/lncubator_temperature_control_service.cpp b/src/lncubator_temperature_control_service.cpp index 7d9f478..3b4e80b 100644 --- a/src/lncubator_temperature_control_service.cpp +++ b/src/lncubator_temperature_control_service.cpp @@ -82,7 +82,7 @@ float LncubatorTemperatureControlService::getTemperature() { temperature_median = (temperature[1] + temperature[2]) / 2; return temperature_median; } -void LncubatorTemperatureControlService::setPwmOutput(float output) { m_hardware->m_deviceIoService.peltier_set_pwm(output); } +void LncubatorTemperatureControlService::setPwmOutput(float output) { m_hardware->peltier_set_pwm(output); } void LncubatorTemperatureControlService::start() { pid_reset(m_pidblock); @@ -99,7 +99,7 @@ void LncubatorTemperatureControlService::stop() {} void LncubatorTemperatureControlService::periodicJob() { if (!m_workingState) return; - if (m_hardware->m_os->hasPassedMS(m_periodicJobLastExecuteTicket) < m_compute_periodms) { + if (m_hardware->hasPassedMS(m_periodicJobLastExecuteTicket) < m_compute_periodms) { return; } m_periodicJobLastExecuteTicket = m_os->getTicket(); diff --git a/src/lncubator_temperature_control_service.hpp b/src/lncubator_temperature_control_service.hpp index 542af8e..53ed83b 100644 --- a/src/lncubator_temperature_control_service.hpp +++ b/src/lncubator_temperature_control_service.hpp @@ -1,5 +1,4 @@ #pragma once -#include "board/device_io_service.hpp" #include "board\hardware.hpp" #include "libiflytop_micro\stm32\basic\iflytop_micro_os.hpp" #include "libiflytop_micro\stm32\component\pid\pid_ctrl.h" diff --git a/src/umain.cpp b/src/umain.cpp index e17373a..5b92a6d 100644 --- a/src/umain.cpp +++ b/src/umain.cpp @@ -1,8 +1,6 @@ #include #include -#include "board/device_io_service.hpp" -#include "board/libtmcimpl.hpp" #include "board/project_board.hpp" #include "libiflytop_micro\stm32\basic\basic.h" #include "libtrinamic/src/ic/tmc2160.hpp"