From 95e6668be9e93353e2ea34a7a05e1de30726f82a Mon Sep 17 00:00:00 2001 From: tianjialong Date: Mon, 1 May 2023 15:39:20 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A3=8E=E6=89=87=E4=B8=8D=E5=B8=A6=E5=8F=8D?= =?UTF-8?q?=E9=A6=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/MDK-ARM/app.uvguix.29643 | 36 ++++++++--- src/board/hardware.cpp | 143 +++++++++++++++++++++++++++++++++++++++++++ src/board/hardware.hpp | 34 ++++++++-- 3 files changed, 198 insertions(+), 15 deletions(-) diff --git a/app/MDK-ARM/app.uvguix.29643 b/app/MDK-ARM/app.uvguix.29643 index d5d497e..acbdca2 100644 --- a/app/MDK-ARM/app.uvguix.29643 +++ b/app/MDK-ARM/app.uvguix.29643 @@ -110,8 +110,8 @@ 0 - 60 - 010000000400000001000000010000000100000001000000000000000200000000000000010000000100000000000000280000002800000000000000 + 323 + 01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000079433A5C55736572735C32393634335C4465736B746F705C705F626F6469746563685F76696461735F61383030305C705F626F6469746563685F76696461735F61383030305F496E63756261746F725F636F6E74726F6C5F73797374656D5F636F70795C7372635C626F6172645C68617264776172652E637070000000000C68617264776172652E63707000000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000320900008B000000D00E0000DF020000 @@ -526,7 +526,7 @@ 0 32767 0 - 4096 + 32768 0 16 @@ -1166,7 +1166,7 @@ 0 32767 0 - 4096 + 32768 0 16 @@ -1186,7 +1186,7 @@ 0 32767 0 - 4096 + 32768 0 16 @@ -1246,7 +1246,7 @@ 0 32767 0 - 4096 + 32768 0 16 @@ -1266,7 +1266,7 @@ 0 32767 0 - 4096 + 32768 0 16 @@ -1806,7 +1806,7 @@ File 2537 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000400020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000004000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000004000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000400000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000004001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000400160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050FFFFFFFF0096000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -1822,7 +1822,7 @@ Build 966 - 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000004001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000036170709600000000000000010003617070000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 + 00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000002001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000010000000000000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000036170709600000000000000010003617070000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000 583 @@ -3598,4 +3598,22 @@ + + 1 + 0 + + 100 + 0 + + ..\..\src\board\hardware.cpp + 0 + 1 + 9 + 1 + + 0 + + + + diff --git a/src/board/hardware.cpp b/src/board/hardware.cpp index 7a5c4b4..8ac8639 100644 --- a/src/board/hardware.cpp +++ b/src/board/hardware.cpp @@ -15,12 +15,14 @@ void Hardware::hardwareinit() { debug_light_init(); can_init(); temperature_init(); + fan_init(1000); peltier_init(); } void Hardware::periodicJob() { debug_light_periodicJob(); can_periodicJob(); temperature_periodicJob(); + fan_periodicJob(); peltier_periodicJob(); } @@ -154,6 +156,147 @@ void Hardware::temperature_periodicJob() { } /******************************************************************************* + * 风扇 * + *******************************************************************************/ +void Hardware::fan_init(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::gpioInitAsOutput(GPIOC, GPIO_PIN_0, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); + // fan4 + STM32_HAL::gpioInitAsOutput(GPIOC, GPIO_PIN_2, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); + // fan5 + STM32_HAL::gpioInitAsOutput(GPIOC, GPIO_PIN_3, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL, GPIO_SPEED_FREQ_LOW, GPIO_PIN_RESET); + + /** + * @brief 风扇反馈初始化 + * + * FAN0_FB_INT PC1 + * FAN1_FB_INT PC4 + * FAN2_FB_INT PC5 + * FAN3_FB_INT PC6 + * FAN4_FB_INT PC7 + * FAN5_FB_INT PC10 + */ + // m_fan.fanStateMonitor[0].initialize(this, GPIOC, GPIO_PIN_1, fanGetPowerState(0)); + // m_fan.fanStateMonitor[1].initialize(this, GPIOC, GPIO_PIN_4, fanGetPowerState(1)); + // m_fan.fanStateMonitor[2].initialize(this, GPIOC, GPIO_PIN_5, fanGetPowerState(2)); + // m_fan.fanStateMonitor[3].initialize(this, GPIOC, GPIO_PIN_6, fanGetPowerState(3)); + // m_fan.fanStateMonitor[4].initialize(this, GPIOC, GPIO_PIN_7, fanGetPowerState(4)); + // m_fan.fanStateMonitor[5].initialize(this, GPIOC, GPIO_PIN_10, fanGetPowerState(5)); +} + +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_fan.fan0_3duty = dutyCycle; + + m_fan.m_fanState[0] = dutyCycle > 0; + m_fan.m_fanState[1] = dutyCycle > 0; + m_fan.m_fanState[2] = dutyCycle > 0; + m_fan.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_fan.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_fan.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); + } + } +} +void Hardware::fanSetState0to3(uint16_t dutyCycle) { + fanSetDutyCycle(0, dutyCycle); + m_fan.fan0_3duty = dutyCycle; +} +void Hardware::fanSetState4(uint16_t dutyCycle) { + fanSetDutyCycle(4, dutyCycle); + m_fan.fan4duty = dutyCycle; +} +void Hardware::fanSetState5(uint16_t dutyCycle) { + fanSetDutyCycle(5, dutyCycle); + m_fan.fan5duty = dutyCycle; +} +uint16_t Hardware::fanReadState0to3() { return m_fan.fan0_3duty; } +uint16_t Hardware::fanReadState4() { return m_fan.fan4duty; } +uint16_t Hardware::fanReadState5() { return m_fan.fan5duty; } +bool *Hardware::fanGetPowerState(int fanIndex) { + if (fanIndex > 5) { + while (1) { + ZLOGE(TAG, "fanIndex is out of range!"); + } + } + return &m_fan.m_fanState[fanIndex]; +} + +void Hardware::fan_periodicJob() { + /** + * @brief 风扇状态监控服务周期调度 + */ + // for (size_t i = 0; i < ZARRAY_SIZE(m_fan.fanStateMonitor); i++) { + // m_fan.fanStateMonitor[i].periodicJob(); + // } + + /** + * @brief 风扇测试 + */ + if (testHardwareFlag) { + static uint32_t lastcall; + static int duty = 0; + if (hasPassedMS(lastcall) > 1000) { + lastcall = getTicket(); + duty += 10; + if (duty > 100) duty = 0; + fanSetState0to3(duty); + fanSetState4(duty); + fanSetState5(duty); + /** + * @brief DUYT大于零 FANPowerState为1 + */ + ZLOGI(TAG, "Duty:%d,FANState:%d,%d,%d,%d,%d,%d", duty, *fanGetPowerState(0), // + *fanGetPowerState(1), // + *fanGetPowerState(2), // + *fanGetPowerState(3), // + *fanGetPowerState(4), // + *fanGetPowerState(5)); // + + // ZLOGI(TAG, "FANCount:%d,%d,%d,%d,%d,%d", m_fan.fanStateMonitor[0].getCount(), // + // m_fan.fanStateMonitor[1].getCount(), // + // m_fan.fanStateMonitor[2].getCount(), // + // m_fan.fanStateMonitor[3].getCount(), // + // m_fan.fanStateMonitor[4].getCount(), // + // m_fan.fanStateMonitor[5].getCount()); + } + } +} + +/******************************************************************************* * 帕尔贴 * *******************************************************************************/ void Hardware::peltier_cold_ctr_pwm(int pwm) { STM32_HAL::setPWMDuty(&htim1, TIM_CHANNEL_1, pwm); } diff --git a/src/board/hardware.hpp b/src/board/hardware.hpp index 759745b..12e6b98 100644 --- a/src/board/hardware.hpp +++ b/src/board/hardware.hpp @@ -36,6 +36,14 @@ class Hardware { struct peltier_res_t { int32_t pwm; }; + struct fan_res_t { + // FanStateMonitor fanStateMonitor[6]; + bool m_fanState[6]; + uint16_t fan0_3duty; + uint16_t fan4duty; + uint16_t fan5duty; + }; + fan_res_t m_fan; can_res_t m_can; temperature_res_t m_temperature; peltier_res_t m_peltier; @@ -71,13 +79,18 @@ class Hardware { void temperature_periodicJob(); /******************************************************************************* - * 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); } + void fan_init(int freq); + void fanSetDutyCycle(int fanIndex, uint16_t dutyCycle); + void fanSetState0to3(uint16_t dutyCycle); + void fanSetState4(uint16_t dutyCycle); + void fanSetState5(uint16_t dutyCycle); + uint16_t fanReadState0to3(); + uint16_t fanReadState4(); + uint16_t fanReadState5(); + bool *fanGetPowerState(int fanIndex); + void fan_periodicJob(); /******************************************************************************* * 帕尔贴 * @@ -88,6 +101,15 @@ class Hardware { void peltier_set_pwm(int pwm); int peltier_get_pwm(); void peltier_periodicJob(); + + /******************************************************************************* + * 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); } }; } // namespace iflytop