Browse Source

V202| 支持新设备DT600B

master
zhaohe 1 month ago
parent
commit
13fed65480
  1. 8
      .cproject
  2. 4
      .settings/language.settings.xml
  3. 2
      .vscode/c_cpp_properties.json
  4. 6
      README.md
  5. 2
      app_protocols/transmit_disfection_protocol
  6. 1
      build.bat
  7. 2
      flush.bat
  8. 2
      stm32basic
  9. 12
      transmit_disinfection_micro.ioc
  10. 6
      ucomponents/preportional_valve/preportional_valve_ctrl.cpp
  11. 58
      usrc/app/dmapp.cpp
  12. 25
      usrc/app_main.cpp
  13. 50
      usrc/board/public_board.cpp
  14. 3
      usrc/board/public_board.hpp
  15. 1
      usrc/module/tmc_motor_group.cpp
  16. 2
      usrc/project_configs.h

8
.cproject

@ -30,6 +30,7 @@
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoscanffloat.176411214" name="Use float with scanf from newlib-nano (-u _scanf_float)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoscanffloat" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoprintffloat.164943344" name="Use float with printf from newlib-nano (-u _printf_float)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.nanoprintffloat" useByScannerDiscovery="false" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.386899990" name="Toolchain" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32.12.3.rel1" valueType="string"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp.572784456" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.runtimelibrary_cpp.value.standard_c_standard_cpp" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.553838709" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
<builder buildPath="${workspace_loc:/transmit_disinfection_micro}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.764087106" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1243726437" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
@ -65,11 +66,12 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/app_protocols}&quot;"/>
</option>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.languagestandard.249988768" name="Language standard" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.languagestandard" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.languagestandard.value.gnu18" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.warnings.treataserror.1803030210" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.warnings.treataserror" value="true" valueType="boolean"/>
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.330299437" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
</tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.344817877" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.529642841" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.345929657" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.529642841" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g1" valueType="enumerated"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.345929657" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.value.o1" valueType="enumerated"/>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.980152850" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="DEBUG"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
@ -100,6 +102,8 @@
<listOptionValue builtIn="false" value="-Wno-unused-variable"/>
</option>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.nortti.878350755" name="Disable generation of information about every class with virtual functions (-fno-rtti)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.nortti" useByScannerDiscovery="false" value="false" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.warnings.treataserror.751036860" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.warnings.treataserror" value="true" valueType="boolean"/>
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.noexceptions.439269168" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.noexceptions" value="false" valueType="boolean"/>
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.54112860" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
</tool>
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.163881313" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker"/>

4
.settings/language.settings.xml

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1435204079586223940" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="128262067148951915" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1327737044924133171" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="34046847629633430" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

2
.vscode/c_cpp_properties.json

@ -21,7 +21,7 @@
"USE_HAL_DRIVER",
"STM32F407xx"
],
"compilerPath": "C:/ST/STM32CubeIDE_1.13.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.0.100.202403111256/tools/bin/arm-none-eabi-g++.exe",
"compilerPath": "C:/ST/STM32CubeIDE_1.17.0/STM32CubeIDE/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.1.0.202410251130/tools/bin/arm-none-eabi-g++.exe",
"intelliSenseMode": "${default}"
}
],

6
README.md

@ -34,6 +34,9 @@
V201
1.修复泵机启动不起来的BUG
V202
1. 添加新设备DT600B的支持
```
@ -51,4 +54,7 @@ BoardTypeId:
kDrawBarDMExtBallValveCtrl = 0x9, // 手持拉杆箱消毒机外部球阀控制板
kH2O2SensorBoard = 0xA, // H2O2传感器板
DT600B_LC_BOARD = 0x61,
DT600B_PC_BOARD = 0x62,
```

2
app_protocols/transmit_disfection_protocol

@ -1 +1 @@
Subproject commit 1ca640c0002d226f11ae6463ee63b4db9a05e35d
Subproject commit a77985829c2972df6bf04a8a2195431559acff75

1
build.bat

@ -0,0 +1 @@
C:\ST\STM32CubeIDE_1.17.0\STM32CubeIDE\headless-build.bat -data ../ -build transmit_disinfection_micro/Debug

2
flush.bat

@ -0,0 +1,2 @@
C:\ST\STM32CubeIDE_1.17.0\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.12.3.rel1.win32_1.1.0.202410251130\tools\bin\STM32_Programmer_CLI.exe ^
-c port=SWD -w Debug\transmit_disinfection_micro.hex -rst

2
stm32basic

@ -1 +1 @@
Subproject commit cbc4bfd877ab7efefe281b29575aa7dcb93863a0
Subproject commit 55c6798249b224f85639a292e3b2026b97529541

12
transmit_disinfection_micro.ioc

@ -117,8 +117,8 @@ Mcu.PinsNb=28
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32F407VETx
MxCube.Version=6.11.0
MxDb.Version=DB.6.0.110
MxCube.Version=6.13.0
MxDb.Version=DB.6.0.130
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false\:false
NVIC.CAN1_RX0_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
NVIC.CAN1_RX1_IRQn=true\:5\:0\:false\:false\:true\:true\:true\:true\:true
@ -201,7 +201,7 @@ ProjectManager.CustomerFirmwarePackage=
ProjectManager.DefaultFWLocation=true
ProjectManager.DeletePrevious=false
ProjectManager.DeviceId=STM32F407VETx
ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.28.0
ProjectManager.FirmwarePackage=STM32Cube FW_F4 V1.28.2
ProjectManager.FreePins=true
ProjectManager.HalAssertFull=true
ProjectManager.HeapSize=0x0000
@ -213,8 +213,8 @@ ProjectManager.MultiThreaded=true
ProjectManager.NoMain=false
ProjectManager.PreviousToolchain=STM32CubeIDE
ProjectManager.ProjectBuild=false
ProjectManager.ProjectFileName=transmit_disinfection_micro_re.ioc
ProjectManager.ProjectName=transmit_disinfection_micro_re
ProjectManager.ProjectFileName=transmit_disinfection_micro.ioc
ProjectManager.ProjectName=transmit_disinfection_micro
ProjectManager.ProjectStructure=
ProjectManager.RegisterCallBack=
ProjectManager.StackSize=0x2000
@ -224,7 +224,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_RNG_Init-RNG-false-HAL-true,8-MX_TIM7_Init-TIM7-false-HAL-true,9-MX_TIM6_Init-TIM6-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_USART3_UART_Init-USART3-false-HAL-true,12-MX_CAN1_Init-CAN1-false-HAL-true,13-MX_SPI1_Init-SPI1-false-HAL-true,14-MX_USART2_UART_Init-USART2-false-HAL-true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_USART1_UART_Init-USART1-false-HAL-true,5-MX_TIM3_Init-TIM3-false-HAL-true,6-MX_CRC_Init-CRC-false-HAL-true,7-MX_RNG_Init-RNG-false-HAL-true,8-MX_TIM7_Init-TIM7-false-HAL-true,9-MX_TIM6_Init-TIM6-false-HAL-true,10-MX_TIM1_Init-TIM1-false-HAL-true,11-MX_USART3_UART_Init-USART3-false-HAL-true,12-MX_CAN1_Init-CAN1-false-HAL-true,13-MX_SPI1_Init-SPI1-false-HAL-true,14-MX_USART2_UART_Init-USART2-false-HAL-true,15-MX_IWDG_Init-IWDG-false-HAL-true
RCC.48MHZClocksFreq_Value=48000000
RCC.AHBFreq_Value=144000000
RCC.APB1CLKDivider=RCC_HCLK_DIV4

6
ucomponents/preportional_valve/preportional_valve_ctrl.cpp

@ -68,7 +68,7 @@ int32_t PreportionalValveCtrl::getValveOrderPos(int32_t valueid, int32_t* pos) {
int32_t PreportionalValveCtrl::isBusy(int32_t valueid, int32_t* busy) {
#if 1
int32_t orderpos = 0;
//int32_t orderpos = 0;
int32_t pos = 0;
int32_t err = 0;
@ -76,7 +76,7 @@ int32_t PreportionalValveCtrl::isBusy(int32_t valueid, int32_t* busy) {
err = getValveOrderPos(valueid, &orderpos);
if (err != 0) return err;
#endif
orderpos = m_targetpos[valueid];
//orderpos = m_targetpos[valueid];
err = getValvePos(valueid, &pos);
if (err != 0) return err;
@ -101,4 +101,4 @@ int32_t PreportionalValveCtrl::getValveWorkState(int32_t valueid, int32_t* state
if (!ret) return kerr_subdevice_overtime;
*state = state16;
return 0;
}
}

58
usrc/app/dmapp.cpp

@ -34,12 +34,13 @@ void DisinfectionApp::initialize() {
// large space disinfection machine,
// small space disinfection machine,
// pipe disinfection machine,
ZASSERT(PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM());
// DT600B,
ZASSERT(PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM() || PORT::isDT600B());
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
if (PORT::isPowerCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM())) {
if (PORT::isPowerCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM() || PORT::isDT600B())) {
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT();
heaterCtrler.initialize(PC7, &hadc1, ADC_CHANNEL_2, &hadc1, ADC_CHANNEL_9);
}
@ -47,7 +48,7 @@ void DisinfectionApp::initialize() {
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
if (PORT::isPowerCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM())) {
if (PORT::isPowerCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isDT600B())) {
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT();
blowerCtrler.initialize(PC5, &hadc1, ADC_CHANNEL_1);
} //
@ -60,7 +61,7 @@ void DisinfectionApp::initialize() {
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
if (PORT::isPowerCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM())) {
if (PORT::isPowerCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM() || PORT::isDT600B())) {
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT();
airComCtrler.initialize(PC3, &hadc1, ADC_CHANNEL_0);
}
@ -74,7 +75,7 @@ void DisinfectionApp::initialize() {
/***********************************************************************************************************************
* H2O2传感器 *
***********************************************************************************************************************/
if (PORT::isPowerCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM())) {
if (PORT::isPowerCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM() || PORT::isDT600B())) {
LargeSpaceDmPowerCtrlBoardHal::HUART3_INIT(19200, UART_STOPBITS_2);
LargeSpaceDmPowerCtrlBoardHal::HADC1_INIT();
osDelay(3000);
@ -84,7 +85,7 @@ void DisinfectionApp::initialize() {
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
if (PORT::isLiquidCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM())) {
if (PORT::isLiquidCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM() || PORT::isDT600B())) {
ZLOGI(TAG, "WaterSensor init");
evaporationBinWS.initAsInput(PC7, kxs_gpio_nopull, kxs_gpio_no_irq, false /*mirror*/);
deviceBottomWS.initAsInput(PC8, kxs_gpio_nopull, kxs_gpio_no_irq, false /*mirror*/);
@ -96,7 +97,7 @@ void DisinfectionApp::initialize() {
/***********************************************************************************************************************
* TMC电机初始化 *
***********************************************************************************************************************/
if (PORT::isLiquidCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM())) {
if (PORT::isLiquidCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM() || PORT::isDT600B())) {
// TMC电机初始化
ZLOGI(TAG, "TMCMotorGroup init");
LargeSpaceDMLiquidCtrlBoardHal::HSPI1_INIT();
@ -106,7 +107,7 @@ void DisinfectionApp::initialize() {
/***********************************************************************************************************************
* *
***********************************************************************************************************************/
if (PORT::isLiquidCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM())) {
if (PORT::isLiquidCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM() || PORT::isDT600B())) {
// 三色指示灯初始化
ZLOGI(TAG, "WarningLightDriver init");
wlDriver.initialize(PD8, PD7, PD9, PD10);
@ -171,8 +172,11 @@ void DisinfectionApp::initialize() {
});
}
// 加液泵液路进气阀
if (PORT::isLiquidCtrlBoard()) {
/**
* @brief
*
*/
if (PORT::isLiquidCtrlBoard() && (PORT::isLargeSpaceDM() || PORT::isSamllSpaceDM() || PORT::isPipeDM())) {
static ZGPIO valve;
valve.initAsOutput(PB3, kxs_gpio_nopull, true, false);
REG_LAMADA_FN(kfn_set_add_fluid_channel_selector_valve, [&](ProcessContext* cxt) {
@ -184,6 +188,40 @@ void DisinfectionApp::initialize() {
zcanbus_send_ack(cxt->packet, NULL, 0);
});
}
/**
* @brief
*/
if (PORT::isLiquidCtrlBoard() && (PORT::isDT600B())) {
// 初始化
static ZGPIO io0;
static bool io0enable = false;
static ZGPIO io1;
static bool io1enable = false;
static ZGPIO io2;
static bool io2enable = false;
if (PORT::isDT600B()) {
io0.initAsInput(PD11, kxs_gpio_nopull, kxs_gpio_no_irq, true /*mirror*/);
io0enable = true;
}
if (io0enable || io1enable || io2enable) {
REG_LAMADA_FN(kfn_liquid_level_read_io_state, [&](ProcessContext* cxt) {
int32_t liquid_level_state = 0;
if (io0enable) {
liquid_level_state |= (io0.read() ? 0 : 1) << 0; // bit0:低液位置
}
if (io1enable) {
liquid_level_state |= (io1.read() ? 0 : 1) << 1; // bit1:中液位
}
if (io2enable) {
liquid_level_state |= (io2.read() ? 0 : 1) << 2; // bit2:高液位
}
zcanbus_send_ack(cxt->packet, liquid_level_state);
});
}
}
}
/***********************************************************************************************************************

25
usrc/app_main.cpp

@ -26,8 +26,6 @@ void StartDefaultTask(void const* argument) { umain(); }
*******************************************************************************/
extern "C" {
// void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
// }
}
void debug_light_ctrl() {
@ -47,27 +45,6 @@ void debug_light_ctrl() {
}
}
void idtable_init() {
// 大空间ID初始化
IdMgr::ins().addIdItem({kLargeSpaceDMLiquidCtrlBoard, klarge_space_disinfection_machine, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({kLargeSpaceDMPowerCtrlBoard, klarge_space_disinfection_machine, kFixBoardId_PowerControl});
// 小空间ID初始化
IdMgr::ins().addIdItem({kSmallSpaceDMLiquidCtrlBoard, ksmall_space_disinfection_machine, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({kSmallSpaceDMPowerCtrlBoard, ksmall_space_disinfection_machine, kFixBoardId_PowerControl});
// 管道ID初始化
IdMgr::ins().addIdItem({kPipeDMLiquidCtrlBoard, kpipe_disinfection_machine, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({kPipeDMPowerCtrlBoard, kpipe_disinfection_machine, kFixBoardId_PowerControl});
// 拉杆箱ID初始化
IdMgr::ins().addIdItem({kDrawBarDMLiquidCtrlBoard, kdraw_bar_disinfection_box, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({kDrawBarDMPowerCtrlBoard, kdraw_bar_disinfection_box, kFixBoardId_PowerControl});
// H2O2传感器ID初始化
IdMgr::ins().addIdItem({kH2O2SensorBoard, kh2o2_ext_sensor, kFixBoardId_H2O2SensorStart});
}
#define REG_PROCESSER(processer) ProtocolProcesserMgr::ins()->regProcesser(processer);
/* IWDG init function */
@ -83,7 +60,7 @@ void MX_IWDG_Init(void) {
void umain() {
gBoardFlagSetResetFlag();
idtable_init();
PORT::idtable_init();
deviceInfo_init();
// config_init();
AppPeriodTaskMgr::ins()->initialize();

50
usrc/board/public_board.cpp

@ -116,29 +116,20 @@ int PublicBoard::getBoardTypeId() {
return getDeviceIdFromFlash();
} else {
return 0;
// int32_t id = 0;
// id += BID0.read() ? 1 : 0;
// id += BID1.read() ? 2 : 0;
// id += BID2.read() ? 4 : 0;
// id += BID3.read() ? 8 : 0;
// id += BID4.read() ? 16 : 0;
// id += BID5.read() ? 32 : 0;
// id += BID6.read() ? 64 : 0;
// id += BID7.read() ? 128 : 0;
// return id;
}
}
int PublicBoard::getBoardId() {
int boardIdoff = 0;
if (getBoardTypeId() == kH2O2SensorBoard) {
int boardIdoff = 0;
static ZGPIO id_from_machine; // 消毒机上的开关
if (!id_from_machine.isInited()) {
id_from_machine.initAsInput(PE8, kxs_gpio_nopull, kxs_gpio_no_irq, false);
}
boardIdoff = id_from_machine.read() ? 1 : 2;
return IdMgr::ins().getBoardId(getBoardTypeId()) + boardIdoff;
} else {
return IdMgr::ins().getBoardId(getBoardTypeId());
}
return IdMgr::ins().getBoardId(getBoardTypeId()) + boardIdoff;
}
bool PORT::isLargeSpaceDM() { return PublicBoard::ins()->getProjId() == klarge_space_disinfection_machine; }
@ -146,11 +137,15 @@ bool PORT::isSamllSpaceDM() { return PublicBoard::ins()->getProjId() == ksmall_s
bool PORT::isPipeDM() { return PublicBoard::ins()->getProjId() == kpipe_disinfection_machine; }
bool PORT::isDrawBarDM() { return PublicBoard::ins()->getProjId() == kdraw_bar_disinfection_box; }
bool PORT::isH2O2Sensor() { return PublicBoard::ins()->getProjId() == kh2o2_ext_sensor; }
bool PORT::isDT600B() { return PublicBoard::ins()->getProjId() == DT600B; }
bool PORT::isLiquidCtrlBoard() {
if (PublicBoard::ins()->getBoardTypeId() == kLargeSpaceDMLiquidCtrlBoard || //
PublicBoard::ins()->getBoardTypeId() == kSmallSpaceDMLiquidCtrlBoard || //
PublicBoard::ins()->getBoardTypeId() == kPipeDMLiquidCtrlBoard || //
PublicBoard::ins()->getBoardTypeId() == kDrawBarDMLiquidCtrlBoard) {
PublicBoard::ins()->getBoardTypeId() == kDrawBarDMLiquidCtrlBoard || //
PublicBoard::ins()->getBoardTypeId() == DT600B_LC_BOARD //
) {
return true;
}
return false;
@ -159,13 +154,38 @@ bool PORT::isPowerCtrlBoard() {
if (PublicBoard::ins()->getBoardTypeId() == kLargeSpaceDMPowerCtrlBoard || //
PublicBoard::ins()->getBoardTypeId() == kSmallSpaceDMPowerCtrlBoard || //
PublicBoard::ins()->getBoardTypeId() == kPipeDMPowerCtrlBoard || //
PublicBoard::ins()->getBoardTypeId() == kDrawBarDMPowerCtrlBoard) {
PublicBoard::ins()->getBoardTypeId() == kDrawBarDMPowerCtrlBoard || //
PublicBoard::ins()->getBoardTypeId() == DT600B_PC_BOARD //
) {
return true;
}
return false;
}
void PORT::idtable_init() {
// 大空间ID初始化
IdMgr::ins().addIdItem({kLargeSpaceDMLiquidCtrlBoard, klarge_space_disinfection_machine, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({kLargeSpaceDMPowerCtrlBoard, klarge_space_disinfection_machine, kFixBoardId_PowerControl});
// 小空间ID初始化
IdMgr::ins().addIdItem({kSmallSpaceDMLiquidCtrlBoard, ksmall_space_disinfection_machine, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({kSmallSpaceDMPowerCtrlBoard, ksmall_space_disinfection_machine, kFixBoardId_PowerControl});
// 管道ID初始化
IdMgr::ins().addIdItem({kPipeDMLiquidCtrlBoard, kpipe_disinfection_machine, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({kPipeDMPowerCtrlBoard, kpipe_disinfection_machine, kFixBoardId_PowerControl});
// 拉杆箱ID初始化
IdMgr::ins().addIdItem({kDrawBarDMLiquidCtrlBoard, kdraw_bar_disinfection_box, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({kDrawBarDMPowerCtrlBoard, kdraw_bar_disinfection_box, kFixBoardId_PowerControl});
// H2O2传感器ID初始化
IdMgr::ins().addIdItem({kH2O2SensorBoard, kh2o2_ext_sensor, kFixBoardId_H2O2SensorStart});
// 小空间经济版
IdMgr::ins().addIdItem({DT600B_LC_BOARD, DT600B, kFixBoardId_LiquidCtrl});
IdMgr::ins().addIdItem({DT600B_PC_BOARD, DT600B, kFixBoardId_PowerControl});
}
namespace iflytop {
bool isBoardType(int32_t val0) {

3
usrc/board/public_board.hpp

@ -36,11 +36,14 @@ bool isBoardType(int32_t val0, int32_t val1, int32_t val2, int32_t val3);
class PORT {
public:
static void idtable_init();
static bool isLargeSpaceDM();
static bool isSamllSpaceDM();
static bool isPipeDM();
static bool isDrawBarDM();
static bool isH2O2Sensor();
static bool isDT600B();
static bool isLiquidCtrlBoard();
static bool isPowerCtrlBoard();

1
usrc/module/tmc_motor_group.cpp

@ -99,7 +99,6 @@ static void onMotorMonitorTimer(void const* argument) {
}
data.subid = i;
data.detailinfo;
static_assert(sizeof(gstatus) == 4);
memcpy(&data.detailinfo, &gstatus, sizeof(gstatus));
motorErrorFlag_set(i, true);

2
usrc/project_configs.h

@ -15,7 +15,7 @@
* @brief
*
*/
#define SOFTWARE_VERSION 201 // 软件版本
#define SOFTWARE_VERSION 202 // 软件版本
#define HARDWARE_VERSION 1 // 硬件版本
#define PROJECT "transmit_disinfection_micro_re" // 工程名称
#define SN_HEADER "SN" // SN号前缀

Loading…
Cancel
Save