流量计算修改完成,计算精确和标准一致

This commit is contained in:
廖德云 2025-07-10 20:18:35 +08:00
parent aab91996ec
commit a2e4b6656b
28 changed files with 2825 additions and 1727 deletions

View File

@ -0,0 +1,191 @@
<?xml version="1.0" encoding="utf-8"?>
<?fileVersion 4.0.0?>
<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings></externalSettings>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"></extension>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"></extension>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"></extension>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"></extension>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"></extension>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"></extension>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="rtthread" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094" name="Debug" parent="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug">
<folderInfo id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094." name="/" resourcePath="">
<toolChain id="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug.1201710416" name="ARM Cross GCC" superClass="ilg.gnuarmeclipse.managedbuild.cross.toolchain.elf.debug">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash.251260409" name="Create flash image" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createflash" useByScannerDiscovery="false" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting.1365878149" name="Create extended listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.createlisting" useByScannerDiscovery="false"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize.709136944" name="Print size" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.addtools.printsize" useByScannerDiscovery="false" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.1986446770" name="Optimization Level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.level.none" valueType="enumerated"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength.1312975261" name="Message length (-fmessage-length=0)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.messagelength" useByScannerDiscovery="true" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar.1538128212" name="'char' is signed (-fsigned-char)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.signedchar" useByScannerDiscovery="true" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections.2136804218" name="Function sections (-ffunction-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.functionsections" useByScannerDiscovery="true" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections.244767666" name="Data sections (-fdata-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.optimization.datasections" useByScannerDiscovery="true" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.1055848773" name="Debug level" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.level.default" valueType="enumerated"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.501941135" name="Debug format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.debugging.format.dwarf2" valueType="enumerated"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name.1696308067" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.name" useByScannerDiscovery="false" value="GNU Tools for ARM Embedded Processors" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.1558403188" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.architecture" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.architecture.arm" valueType="enumerated"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family.749415257" name="ARM family" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.family" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.mcpu.cortex-m4" valueType="enumerated"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.2114153533" name="Instruction set" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.instructionset.thumb" valueType="enumerated"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix.1600865811" name="Prefix" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.c.1109963929" name="C compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.c" useByScannerDiscovery="false" value="gcc" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp.1040883831" name="C++ compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.cpp" useByScannerDiscovery="false" value="g++" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar.1678200391" name="Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.ar" useByScannerDiscovery="false" value="ar" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy.1171840296" name="Hex/Bin converter" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objcopy" useByScannerDiscovery="false" value="objcopy" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump.342604837" name="Listing generator" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.objdump" useByScannerDiscovery="false" value="objdump" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.size.898269225" name="Size command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.size" useByScannerDiscovery="false" value="size" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.make.2016398076" name="Build command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.make" useByScannerDiscovery="false" value="make" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm.1606171496" name="Remove command" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.command.rm" useByScannerDiscovery="false" value="rm" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.id.540792084" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.toolchain.id" useByScannerDiscovery="false" value="1287942917" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.architecture.430121817" name="Architecture" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.architecture" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.arch.none" valueType="enumerated"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.966735324" name="Float ABI" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.abi.hard" valueType="enumerated"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn.1381561249" name="Enable all common warnings (-Wall)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.warnings.allwarn" useByScannerDiscovery="true" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.target.other.2041717463" name="Other target flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.target.other" useByScannerDiscovery="true" value="" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.1463655269" name="FPU Type" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit" useByScannerDiscovery="true" value="ilg.gnuarmeclipse.managedbuild.cross.option.arm.target.fpu.unit.fpv4spd16" valueType="enumerated"></option>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform.1798638225" isAbstract="false" osList="all" superClass="ilg.gnuarmeclipse.managedbuild.cross.targetPlatform"></targetPlatform>
<builder buildPath="${workspace_loc:/qemu-vexpress-a9}/Debug" cleanBuildTarget="mdk_clean" id="ilg.gnuarmeclipse.managedbuild.cross.builder.1736709688" incrementalBuildTarget="mdk_all" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnuarmeclipse.managedbuild.cross.builder"></builder>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.1810966071" name="GNU ARM Cross Assembler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor.1072524326" name="Use preprocessor" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"></option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths.161242639" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.include.paths" useByScannerDiscovery="true" valueType="includePath">
<listOptionValue builtIn="false" value="E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Project/RVMDK"></listOptionValue>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs.1521934876" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.defs" useByScannerDiscovery="true">
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.flags.1325367962" name="Assembler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.assembler.flags" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value="-mimplicit-it=thumb"></listOptionValue>
</option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input.1843333483" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.assembler.input"></inputType>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1570350559" name="GNU ARM Cross C Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths.634882052" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath">
<listOptionValue builtIn="false" value="E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/CMSIS/Include"></listOptionValue>
<listOptionValue builtIn="false" value="E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/CMSIS/Device/ST/STM32H7xx/Include"></listOptionValue>
<listOptionValue builtIn="false" value="E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Inc"></listOptionValue>
<listOptionValue builtIn="false" value="E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/components/finsh"></listOptionValue>
<listOptionValue builtIn="false" value="E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/include"></listOptionValue>
<listOptionValue builtIn="false" value="E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/include/libc"></listOptionValue>
<listOptionValue builtIn="false" value="E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User"></listOptionValue>
<listOptionValue builtIn="false" value="E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/bsp"></listOptionValue>
<listOptionValue builtIn="false" value="E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/NG"></listOptionValue>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs.100549972" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"></listOptionValue>
<listOptionValue builtIn="false" value="STM32H743xx"></listOptionValue>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other.2133065240" name="Other compiler flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.other" useByScannerDiscovery="true" value="" valueType="string"></option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.files.714348818" name="Include files (-include)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.compiler.include.files" useByScannerDiscovery="true" valueType="includeFiles"></option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.992053063" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input"></inputType>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.869072473" name="Cross ARM C Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections.1167322178" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.gcsections" useByScannerDiscovery="false" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostart.351692886" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostart" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostdlibs.1009243715" name="No startup or default libs (-nostdlib)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nostdlibs" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nodeflibs.2016026082" name="Do not use default libraries (-nodefaultlibs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.nodeflibs" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano.923990336" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.usenewlibnano" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option defaultValue="true" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.shared.548869459" name="Shared (-shared)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.shared" useByScannerDiscovery="false" valueType="boolean"></option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile.1818777301" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value='"${workspace_loc://${ProjName}//linkscripts//STM32F411RE//link.lds}"'></listOptionValue>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.libs.1135656995" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.libs" useByScannerDiscovery="false"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.paths.36884122" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.paths" useByScannerDiscovery="false"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.other.396049466" name="Other linker flags" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.other" useByScannerDiscovery="false" value="" valueType="string"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.cref.1645737861" name="Cross reference (-Xlinker --cref)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.c.linker.cref" useByScannerDiscovery="false" value="true" valueType="boolean"></option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input.334732222" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"></additionalInput>
<additionalInput kind="additionalinput" paths="$(LIBS)"></additionalInput>
</inputType>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.1601059928" name="GNU ARM Cross C++ Linker" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections.437759352" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.gcsections" value="true" valueType="boolean"></option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile.1101974459" name="Script files (-T)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList">
<listOptionValue builtIn="false" value='"${workspace_loc://${ProjName}//linkscripts//STM32F411RE//link.lds}"'></listOptionValue>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref.2007675975" name="Cross reference (-Xlinker --cref)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.cref" useByScannerDiscovery="false" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano.2105838438" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnano" useByScannerDiscovery="false" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs.934137837" name="Libraries (-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.libs" useByScannerDiscovery="false"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart.2118356996" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostart" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs.1427884346" name="Do not use default libraries (-nodefaultlibs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nodeflibs" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostdlibs.1433863653" name="No startup or default libs (-nostdlib)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.nostdlibs" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections.1387745410" name="Print removed sections (-Xlinker --print-gc-sections)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printgcsections" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip.1230158061" name="Omit all symbol information (-s)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.strip" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printmap.1307581821" name="Print link map (-Xlinker --print-map)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.printmap" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.useprintffloat.960778920" name="Use float with nano printf (-u _printf_float)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.useprintffloat" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usescanffloat.637205035" name="Use float with nano scanf (-u _scanf_float)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usescanffloat" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnosys.1948314201" name="Do not use syscalls (--specs=nosys.specs)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.usenewlibnosys" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.verbose.273162112" name="Verbose (-v)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.verbose" useByScannerDiscovery="false" value="false" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths.1399535143" name="Library search path (-L)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.linker.paths" useByScannerDiscovery="false"></option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input.262373798" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"></additionalInput>
<additionalInput kind="additionalinput" paths="$(LIBS)"></additionalInput>
</inputType>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver.506412204" name="GNU ARM Cross Archiver" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.archiver"></tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash.1461589245" name="GNU ARM Cross Create Flash Image" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createflash">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.1937707052" name="Output file format (-O)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice" useByScannerDiscovery="false" value="ilg.gnuarmeclipse.managedbuild.cross.option.createflash.choice.binary" valueType="enumerated"></option>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting.82359725" name="GNU ARM Cross Create Listing" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.createlisting">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source.601724476" name="Display source (--source|-S)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.source" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders.692505279" name="Display all headers (--all-headers|-x)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.allheaders" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle.97345172" name="Demangle names (--demangle|-C)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.demangle" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers.1342893377" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.linenumbers" value="true" valueType="boolean"></option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide.1533725981" name="Wide lines (--wide|-w)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.createlisting.wide" value="true" valueType="boolean"></option>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize.1073550295" name="GNU ARM Cross Print Size" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.printsize">
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format.946451386" name="Size format" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.printsize.format" useByScannerDiscovery="false"></option>
</tool>
<tool id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.1302177015" name="GNU ARM Cross C++ Compiler" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs.704468062" name="Defined symbols (-D)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols">
<listOptionValue builtIn="false" value="SOC_FAMILY_STM32"></listOptionValue>
<listOptionValue builtIn="false" value="SOC_SERIES_STM32F4"></listOptionValue>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"></listOptionValue>
<listOptionValue builtIn="false" value="STM32F411xE"></listOptionValue>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths.302877723" name="Include paths (-I)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath">
<listOptionValue builtIn="false" value='"${workspace_loc://${ProjName}/drivers}"'></listOptionValue>
<listOptionValue builtIn="false" value='"${workspace_loc://${ProjName}/libraries//CMSIS//Device//ST//STM32F4xx//Include}"'></listOptionValue>
<listOptionValue builtIn="false" value='"${workspace_loc://${ProjName}/libraries//CMSIS//Include}"'></listOptionValue>
<listOptionValue builtIn="false" value='"${workspace_loc://${ProjName}/libraries//CMSIS//RTOS//Template}"'></listOptionValue>
<listOptionValue builtIn="false" value='"${workspace_loc://${ProjName}/libraries//STM32F4xx_HAL_Driver//Inc}"'></listOptionValue>
<listOptionValue builtIn="false" value='"${workspace_loc://${ProjName}/libraries//STM32F4xx_HAL_Driver//Inc//Legacy}"'></listOptionValue>
<listOptionValue builtIn="false" value='"${workspace_loc://${ProjName}/applications}"'></listOptionValue>
</option>
<option id="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.files.343249373" name="Include files (-include)" superClass="ilg.gnuarmeclipse.managedbuild.cross.option.cpp.compiler.include.files" useByScannerDiscovery="true"></option>
<inputType id="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input.45918001" superClass="ilg.gnuarmeclipse.managedbuild.cross.tool.cpp.compiler.input"></inputType>
</tool>
</toolChain>
</folderInfo>
<sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="" excluding=""></entry>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"></storageModule>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="qemu-vexpress-a9.ilg.gnuarmeclipse.managedbuild.cross.target.elf.860020518" name="Executable" projectType="ilg.gnuarmeclipse.managedbuild.cross.target.elf"></project>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""></autodiscovery>
<scannerConfigBuildInfo instanceId="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094;ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094.;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.1570350559;ilg.gnuarmeclipse.managedbuild.cross.tool.c.compiler.input.992053063">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""></autodiscovery>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"></storageModule>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug">
<resource resourceType="PROJECT" workspacePath="/GasFlowMeter"></resource>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"></storageModule>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings">
<doc-comment-owner id="org.eclipse.cdt.ui.doxygen">
<path value=""></path>
</doc-comment-owner>
</storageModule>
</cproject>

View File

@ -0,0 +1,639 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>GasFlowMeter</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.rt-thread.studio.rttnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
</natures>
<linkedResources>
<link>
<name>CMSIS</name>
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>DOC</name>
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>STARTUP</name>
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>STM32H7xx_HAL_Driver</name>
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>USER</name>
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>rtt</name>
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>CMSIS/system_stm32h7xx.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/CMSIS/Device/ST/STM32H7xx/Source/Templates/system_stm32h7xx.c</location>
</link>
<link>
<name>DOC/必读说明.txt</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/必读说明.txt</location>
</link>
<link>
<name>STARTUP/startup_stm32h743xx.s</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/CMSIS/Device/ST/STM32H7xx/Source/Templates/arm/startup_stm32h743xx.s</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_adc.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_adc_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_adc_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_cec.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cec.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_comp.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_comp.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_cortex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_crc.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_crc_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_cryp.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cryp.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_cryp_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cryp_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_dac.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dac.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_dac_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dac_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_dcmi.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dcmi.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_dfsdm.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dfsdm.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_dma.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_dma2d.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma2d.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_dma_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_eth.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_eth_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_eth_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_fdcan.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_flash.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_flash_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_gpio.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_hash.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hash.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_hash_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hash_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_hcd.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hcd.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_hrtim.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hrtim.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_hsem.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_i2c.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_i2c_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_i2s.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2s.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_i2s_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2s_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_irda.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_irda.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_iwdg.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_iwdg.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_jpeg.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_jpeg.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_lptim.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_lptim.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_ltdc.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_mdios.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdios.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_mdma.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_mmc.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mmc.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_mmc_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mmc_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_nand.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_nand.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_nor.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_nor.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_opamp.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_opamp.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_opamp_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_opamp_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_pcd.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_pcd_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_pwr.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_pwr_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_qspi.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_qspi.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_rcc.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_rcc_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_rng.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rng.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_rtc.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rtc.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_rtc_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rtc_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_sai.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sai.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_sai_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sai_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_sd.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sd.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_sd_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sd_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_sdram.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sdram.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_smartcard.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_smartcard.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_smartcard_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_smartcard_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_smbus.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_smbus.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_spdifrx.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spdifrx.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_spi.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_spi_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_sram.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sram.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_swpmi.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_swpmi.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_tim.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_tim_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_tim_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_uart.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_uart_ex.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_usart.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_usart.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_hal_wwdg.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_wwdg.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_ll_delayblock.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_delayblock.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_ll_fmc.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_fmc.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_ll_sdmmc.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_sdmmc.c</location>
</link>
<link>
<name>STM32H7xx_HAL_Driver/stm32h7xx_ll_usb.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/Libraries/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_usb.c</location>
</link>
<link>
<name>USER/Detail.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/NG/Detail.c</location>
</link>
<link>
<name>USER/Detail.h</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/NG/Detail.h</location>
</link>
<link>
<name>USER/FlowCal.h</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/NG/FlowCal.h</location>
</link>
<link>
<name>USER/NGCal.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/NG/NGCal.c</location>
</link>
<link>
<name>USER/NGCal.h</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/NG/NGCal.h</location>
</link>
<link>
<name>USER/Therm.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/NG/Therm.c</location>
</link>
<link>
<name>USER/Therm.h</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/NG/Therm.h</location>
</link>
<link>
<name>USER/board.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/board.c</location>
</link>
<link>
<name>USER/board.h</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/board.h</location>
</link>
<link>
<name>USER/bsp_debug_usart.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/bsp/usart/bsp_debug_usart.c</location>
</link>
<link>
<name>USER/bsp_key.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/bsp/key/bsp_key.c</location>
</link>
<link>
<name>USER/bsp_led.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/bsp/led/bsp_led.c</location>
</link>
<link>
<name>USER/core_delay.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/bsp/delay/core_delay.c</location>
</link>
<link>
<name>USER/main.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/main.c</location>
</link>
<link>
<name>USER/rtconfig.h</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/rtconfig.h</location>
</link>
<link>
<name>USER/stm32h7xx_it.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/User/stm32h7xx_it.c</location>
</link>
<link>
<name>rtt/ports</name>
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>rtt/source</name>
<type>2</type>
<locationURI>virtual:/virtual</locationURI>
</link>
<link>
<name>rtt/ports/context_rvds.S</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/libcpu/arm/cortex-m7/context_rvds.S</location>
</link>
<link>
<name>rtt/ports/cpuport.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/libcpu/arm/cortex-m7/cpuport.c</location>
</link>
<link>
<name>rtt/source/clock.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/clock.c</location>
</link>
<link>
<name>rtt/source/components.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/components.c</location>
</link>
<link>
<name>rtt/source/device.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/device.c</location>
</link>
<link>
<name>rtt/source/idle.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/idle.c</location>
</link>
<link>
<name>rtt/source/ipc.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/ipc.c</location>
</link>
<link>
<name>rtt/source/irq.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/irq.c</location>
</link>
<link>
<name>rtt/source/kservice.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/kservice.c</location>
</link>
<link>
<name>rtt/source/mem.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/mem.c</location>
</link>
<link>
<name>rtt/source/memheap.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/memheap.c</location>
</link>
<link>
<name>rtt/source/mempool.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/mempool.c</location>
</link>
<link>
<name>rtt/source/object.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/object.c</location>
</link>
<link>
<name>rtt/source/scheduler.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/scheduler.c</location>
</link>
<link>
<name>rtt/source/signal.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/signal.c</location>
</link>
<link>
<name>rtt/source/thread.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/thread.c</location>
</link>
<link>
<name>rtt/source/timer.c</name>
<type>1</type>
<location>E:/MyDocuments/Documents/project/keilMCU/GasFlowMeter/rtthread/3.0.3/src/timer.c</location>
</link>
</linkedResources>
</projectDescription>

View File

@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="ilg.gnumcueclipse.debug.gdbjtag.pyocd.launchConfigurationType">
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.adapterName" value="DAP-LINK"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.binFlashStartAddress" value=""/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.doContinue" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.doDebugInRam" value="false"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.doFirstReset" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.doGdbServerAllocateConsole" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.doSecondReset" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.doStartGdbServer" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.enableSemihosting" value="true"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.firstResetType" value="init"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbClientOtherCommands" value="set mem inaccessible-by-default off"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbClientOtherOptions" value=""/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbServerBusSpeed" value="1000000"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbServerConnectionAddress" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbServerDeviceName" value="unknown"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbServerEnableSemihosting" value="false"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbServerExecutable" value="${debugger_install_path}/${daplink_debugger_relative_path}\pyocd.exe"/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbServerFlashMode" value="0"/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbServerGdbPortNumber" value="3333"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbServerOther" value=""/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.gdbServerTelnetPortNumber" value="4444"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.otherInitCommands" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.otherRunCommands" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.programMode" value="BIN"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.pyocd.secondResetType" value="halt"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU PyOCD"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="false"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${rtt_gnu_gcc}/arm-none-eabi-gdb.exe"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="0"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/rtthread.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="GasFlowMeter"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/GasFlowMeter"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.cdt.debug.core.sourceLocator"/>
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="true"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="true"/>
</launchConfiguration>

View File

@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="ilg.gnumcueclipse.debug.gdbjtag.jlink.launchConfigurationType">
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.adapterName" value="J-Link"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.binFileStartAddress" value=""/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doConnectToRunning" value="false"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doContinue" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doDebugInRam" value="false"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doFirstReset" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doGdbServerAllocateConsole" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doGdbServerAllocateSemihostingConsole" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doGdbServerInitRegs" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doGdbServerLocalOnly" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doGdbServerSilent" value="false"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doGdbServerVerifyDownload" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doSecondReset" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.doStartGdbServer" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.enableFlashBreakpoints" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.enableSemihosting" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.enableSemihostingIoclientGdbClient" value="false"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.enableSemihostingIoclientTelnet" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.enableSwo" value="true"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.eraseEndAddress" value=""/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.eraseMode" value="0"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.eraseStartAddress" value=""/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.firstResetSpeed" value="1000"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.firstResetType" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.flashDeviceName" value="unknown"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.flashDownloadHex" value="false"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbClientOtherCommands" value="set mem inaccessible-by-default off"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbClientOtherOptions" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerConnection" value="usb"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerConnectionAddress" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerDebugInterface" value="swd"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerDeviceEndianness" value="little"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerDeviceName" value="unknown"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerDeviceSpeed" value="1000"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerExecutable" value="${debugger_install_path}/${jlink_debugger_relative_path}\JLinkGDBServerCL.exe"/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerGdbPortNumber" value="2331"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerLog" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerOther" value="-singlerun"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerRunAfterStopDebug" value="true"/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerSwoPortNumber" value="2332"/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.gdbServerTelnetPortNumber" value="2333"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.interfaceSpeed" value="auto"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.jlinkExecutable" value="${debugger_install_path}/${jlink_debugger_relative_path}\JLink.exe"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.otherInitCommands" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.otherRunCommands" value=""/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.runAfterDownload" value="true"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.secondResetType" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.serailBaudRate" value="115200"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.serailPort" value=""/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.swoEnableTargetCpuFreq" value="0"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.swoEnableTargetPortMask" value="0x1"/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.jlink.swoEnableTargetSwoFreq" value="0"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU J-Link"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="2331"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="true"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${rtt_gnu_gcc}/arm-none-eabi-gdb.exe"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="0"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/rtthread.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="GasFlowMeter"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/GasFlowMeter"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.cdt.debug.core.sourceLocator"/>
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="true"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="true"/>
</launchConfiguration>

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="ilg.gnumcueclipse.debug.gdbjtag.qemu.launchConfigurationType">
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.doContinue" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.doDebugInRam" value="false"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.doFirstReset" value="false"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.doSecondReset" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.doStartGdbServer" value="true"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.enableSemihosting" value="true"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbClientOtherCommands" value="set mem inaccessible-by-default off&#10;"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbClientOtherOptions" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbServerBoardModel" value="?"/>
<intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbServerCpuQuantity" value="1"/>
<booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbServerEnableNetwork" value="false"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbServerExecutable" value="${debugger_install_path}/${qemu_debugger_relative_path}\qemu-system-arm.exe"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbServerExtraQemuCmd" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbServerSdcardMemory" value="64.0"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbServerSerialPort" value="COM1"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbServerStartup" value="${studio_install_path}/repo/Extract/Debugger_Support_Packages/RealThread/QEMU/4.2.0.4/qemu-system-arm.exe -M ? -sd sd.bin -nographic -S -s"/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.gdbServerTapName" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.otherInitCommands" value=""/>
<stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.qemu.otherRunCommands" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU QEMU"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="1234"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="true"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${cross_prefix}gdb${cross_suffix}"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="0"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/rtthread.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="GasFlowMeter"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/GasFlowMeter"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.cdt.debug.core.sourceLocator"/>
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="true"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="true"/>
</launchConfiguration>

View File

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.rtthread.studio.debug.gdbjtag.stlink.launchConfigurationType">
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.connectMode" value="NORMAL"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.debugInterface" value="SWD"/>
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.delay" value="3"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.flashVerify" value="false"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDeviceId" value="org.eclipse.cdt.debug.gdbjtag.core.jtagdevice.genericDevice"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.otherDownloadOption" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.otherGdbserverOption" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="61235"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.resetMode" value=" -hardRst"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.resetRun" value="true"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.runCommands" value=""/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value=""/>
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="false"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="true"/>
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${rtt_gnu_gcc}/arm-none-eabi-gdb.exe"/>
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="0"/>
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="remote"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/rtthread.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="GasFlowMeter"/>
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="false"/>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/GasFlowMeter"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4"/>
</listAttribute>
<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.cdt.debug.core.sourceLocator"/>
<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;no&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
<stringAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_ENCODING" value="UTF-8"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_CONSOLE_OUTPUT_ON" value="true"/>
<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="true"/>
<stringAttribute key="org.rtthread.studio.stlink.debug.gdbjtag.adapterName" value="ST-LINK"/>
<booleanAttribute key="org.rtthread.studio.stlink.debug.gdbjtag.doContinue" value="true"/>
<stringAttribute key="org.rtthread.studio.stlink.debug.gdbjtag.gdbServerDeviceName" value="unknown"/>
<stringAttribute key="org.rtthread.studio.stlink.debug.gdbjtag.gdbServerExecutable" value="${debugger_install_path}/${stlink_debugger_relative_path}/ST-LINK_gdbserver.exe"/>
<stringAttribute key="org.rtthread.studio.stlink.debug.gdbjtag.stlinkGdbServer" value="${debugger_install_path}/${stlink_debugger_relative_path}/tools/bin/STM32_Programmer_CLI.exe"/>
<booleanAttribute key="org.rtthread.studio.stlink.debug.gdbjtag.useRemoteTarget" value="true"/>
</launchConfiguration>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="ilg.gnuarmeclipse.managedbuild.cross.config.elf.debug.553091094" name="Debug">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<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="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="1330607034422298913" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT ARM Cross GCC Built-in Compiler Settings " parameter="${COMMAND} ${FLAGS} ${cross_toolchain_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>
</extension>
</configuration>
</project>

View File

@ -0,0 +1,134 @@
{
"global": {
"use-micro-lib": true,
"output-debug-info": true,
"build-output-dir": "./.rtt-studio/Debug\\",
"list-output-dir": "..\\..\\Listing\\",
"mem-layout": {
"rom": [
{
"name": "rom1",
"checked": false,
"address": "0x0",
"size": "0x0",
"is_entry": false
},
{
"name": "rom2",
"checked": false,
"address": "0x0",
"size": "0x0",
"is_entry": false
},
{
"name": "rom3",
"checked": false,
"address": "0x0",
"size": "0x0",
"is_entry": false
},
{
"name": "irom1",
"checked": true,
"address": "0x8000000",
"size": "0x20000",
"is_entry": true
},
{
"name": "irom2",
"checked": false,
"address": "0x0",
"size": "0x0",
"is_entry": false
}
],
"ram": [
{
"name": "ram1",
"checked": false,
"noInit": false,
"address": "0x0",
"size": "0x0"
},
{
"name": "ram2",
"checked": false,
"noInit": false,
"address": "0x0",
"size": "0x0"
},
{
"name": "ram3",
"checked": false,
"noInit": false,
"address": "0x0",
"size": "0x0"
},
{
"name": "iram1",
"checked": true,
"noInit": false,
"address": "0x20000000",
"size": "0x20000"
},
{
"name": "iram2",
"checked": true,
"noInit": false,
"address": "0x24000000",
"size": "0x80000"
}
]
}
},
"c/cpp": {
"include-list": [
"..\\..\\Libraries\\CMSIS\\Include",
"..\\..\\Libraries\\CMSIS\\Device\\ST\\STM32H7xx\\Include",
"..\\..\\Libraries\\STM32H7xx_HAL_Driver\\Inc",
"..\\..\\rtthread\\3.0.3\\components\\finsh",
"..\\..\\rtthread\\3.0.3\\include",
"..\\..\\rtthread\\3.0.3\\include\\libc",
"..\\..\\User",
"..\\..\\User\\bsp",
"..\\..\\User\\NG"
],
"define-list": [
"USE_HAL_DRIVER",
"STM32H743xx"
],
"misc-controls": "",
"execute-only-code": false,
"read-only-position-independent": false,
"read-write-position-independent": false,
"split-load-and-store-multiple": false,
"c99-mode": true,
"optimization": 2,
"optimize-for-time": false,
"one-elf-section-per-function": true,
"strict-ansi-c": false,
"enum-container-always-int": false,
"plain-char-is-signed": false,
"gnu-extensions": false,
"warnings": 2
},
"asm": {
"include-list": [],
"define-list": [],
"misc-controls": "",
"execute-only-code": false,
"read-only-position-independent": false,
"read-write-position-independent": false,
"split-load-and-store-multiple": false,
"thumb-mode": false,
"no-warnings": false
},
"linker": {
"auto-gen-scatter-file": true,
"linker-scatter-file": "",
"misc-controls": "",
"read-only-position-independent": false,
"read-write-position-independent": false,
"not-search-std-libs": false
}
}

View File

@ -0,0 +1,3 @@
eclipse.preferences.project.mdk.projectRoot="E\:\\MyDocuments\\Documents\\project\\keilMCU\\GasFlowMeter\\Project\\RVMDK\\.rtt-studio"
eclipse.preferences.project.mdk.uvprojxPath="E\:\\MyDocuments\\Documents\\project\\keilMCU\\GasFlowMeter\\Project\\RVMDK\\Fire_RT-Thread.uvprojx"
eclipse.preferences.version=1

View File

@ -0,0 +1,9 @@
#RT-Thread Studio Project Configuration
#Wed Jul 09 21:19:55 CST 2025
project_type=mdk
output_project_path=E\:MyDocumentsDocumentsprojectkeilMCUGasFlowMeterProjectRVMDK.rtt-studio
hardware_adapter=J-Link
chip_name=STM32H750XB
import_project_name=Fire_RT-Thread.uvprojx
project_name=GasFlowMeter
cfg_version=v3.0

View File

@ -0,0 +1,14 @@
RM := rm -rf
BRIDGE_EXE := studio-mdk-bridge.exe
UV4_EXE := "D:\Keil_v5\UV4\UV4.exe"
UVPROJX_LOC := "E:\MyDocuments\Documents\project\keilMCU\GasFlowMeter\Project\RVMDK\Fire_RT-Thread.uvprojx"
.PHONY: mdk_all
mdk_all:
-$(BRIDGE_EXE) --build --uv4-path $(UV4_EXE) $(UVPROJX_LOC)
mdk_clean:
-@$(RM) *
@echo 'success'

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -4,37 +4,24 @@
#include <stdlib.h>
#include <string.h>
#define NUMBEROFCOMPONENTS 21
Detail *Detail_Construct(void) {
Detail *pDetail = (Detail *) malloc(sizeof(Detail));
if (!pDetail) {
return NULL;
}
memset(pDetail, 0, sizeof(Detail));
pDetail->iNCC = 0;
for (int i = 0; i < NUMBEROFCOMPONENTS; i++) {
pDetail->aiCID[i] = -1;
}
pDetail->dOldMixID = 0.0;
pDetail->dOldPb = 0.0;
pDetail->dOldTb = 0.0;
pDetail->dOldPf = 0.0;
pDetail->dOldTf = 0.0;
for (int i = 0; i < NUMBEROFCOMPONENTS; i++) {
pDetail->dXi[i] = 0.0;
}
if (Detail_table(pDetail) != 0) {
free(pDetail);
return NULL;
@ -48,26 +35,23 @@ void Detail_Destroy(Detail *pDetail) {
}
}
int Detail_compositionchange(Detail *pDetail, NGParSTRUCT *ptNGPar) {
int Detail_compositionchange(Detail *pDetail, const NGParSTRUCT *ptNGPar) {
double dMixID = 0.0;
int i;
for (i = 0; i < NUMBEROFCOMPONENTS; i++)
for (int i = 0; i < NUMBEROFCOMPONENTS; i++)
dMixID += ((i + 2) * ptNGPar->adMixture[i]);
if (dMixID != pDetail->dOldMixID) {
pDetail->dOldMixID = dMixID;
return true;
} else {
return false;
return 1;
}
return 0;
}
void Detail_Run(Detail *pDetail, NGParSTRUCT *ptNGPar) {
int i;
bool bCompChange = Detail_compositionchange(pDetail, ptNGPar);
const int bCompChange = Detail_compositionchange(pDetail, ptNGPar);
ptNGPar->bForceUpdate = ptNGPar->bForceUpdate || bCompChange;
if (ptNGPar->bForceUpdate) {
pDetail->iNCC = 0;
for (i = 0; i < NUMBEROFCOMPONENTS; i++) {
for (int i = 0; i < NUMBEROFCOMPONENTS; i++) {
if (ptNGPar->adMixture[i] > 0.0) {
pDetail->aiCID[pDetail->iNCC] = i;
pDetail->dXi[pDetail->iNCC] = ptNGPar->adMixture[i];
@ -77,9 +61,9 @@ void Detail_Run(Detail *pDetail, NGParSTRUCT *ptNGPar) {
Detail_paramdl(pDetail);
Detail_chardl(pDetail, ptNGPar);
}
if ((fabs(ptNGPar->dPb - pDetail->dOldPb) > P_CHG_TOL) ||
(fabs(ptNGPar->dTb - pDetail->dOldTb) > T_CHG_TOL) ||
(ptNGPar->bForceUpdate)) {
if (fabs(ptNGPar->dPb - pDetail->dOldPb) > P_CHG_TOL ||
fabs(ptNGPar->dTb - pDetail->dOldTb) > T_CHG_TOL ||
ptNGPar->bForceUpdate) {
pDetail->dP = ptNGPar->dPb * 1.0e-6;
pDetail->dT = ptNGPar->dTb;
Detail_temp(pDetail);
@ -91,13 +75,13 @@ void Detail_Run(Detail *pDetail, NGParSTRUCT *ptNGPar) {
ptNGPar->dRhob = pDetail->dRhoTP;
pDetail->dOldTb = ptNGPar->dTb;
pDetail->dOldPb = ptNGPar->dPb;
ptNGPar->bForceUpdate = true;
ptNGPar->bForceUpdate = 1;
}
pDetail->dP = ptNGPar->dPf * 1.0e-6;
pDetail->dT = ptNGPar->dTf;
if ((fabs(ptNGPar->dTf - pDetail->dOldTf) > T_CHG_TOL) || (ptNGPar->bForceUpdate)) {
Detail_temp(pDetail);
ptNGPar->bForceUpdate = true;
ptNGPar->bForceUpdate = 1;
}
if ((fabs(ptNGPar->dPf - pDetail->dOldPf) > P_CHG_TOL) || (ptNGPar->bForceUpdate)) {
Detail_ddetail(pDetail, ptNGPar);
@ -112,7 +96,7 @@ void Detail_Run(Detail *pDetail, NGParSTRUCT *ptNGPar) {
ptNGPar->dFpv = sqrt(ptNGPar->dZb / ptNGPar->dZf);
} else {
ptNGPar->lStatus = GENERAL_CALCULATION_FAILURE;
ptNGPar->bForceUpdate = false;
ptNGPar->bForceUpdate = 0;
}
}
@ -120,7 +104,6 @@ int Detail_table(Detail *pDetail) {
if (!pDetail) {
return -1;
}
double adAn[58];
double adUn[58];
adAn[0] = 0.153832600;
@ -182,7 +165,6 @@ int Detail_table(Detail *pDetail) {
adAn[56] = -0.001226752;
adAn[57] = 0.002850908;
adUn[0] = 0.0;
adUn[1] = 0.5;
adUn[2] = 1.0;
@ -241,10 +223,8 @@ int Detail_table(Detail *pDetail) {
adUn[55] = 0.0;
adUn[56] = 1.0;
adUn[57] = 0.0;
memcpy(pDetail->adAn, adAn, sizeof(adAn));
memcpy(pDetail->adUn, adUn, sizeof(adUn));
for (int j = 0; j < NUMBEROFCOMPONENTS; j++) {
for (int k = j; k < NUMBEROFCOMPONENTS; k++) {
pDetail->adTable6Eij[j][k] = 1.0;
@ -387,66 +367,12 @@ int Detail_table(Detail *pDetail) {
pDetail->adTable6Gij[2][3] = 0.370296;
pDetail->adTable6Gij[2][5] = 1.673090;
double adTableHhvMol[4][NUMBEROFCOMPONENTS] = {
{
892.97, 0, 0, 1564.34, 2224.01, 45.074, 562.94, 286.63, 282.8, 0, 2874.2, 2883.82, 3535.98, 3542.89,
4203.23, 4862.87, 5522.4, 6182.91, 6842.69, 0, 0
},
{
891.56, 0, 0, 1562.14, 2221.1, 44.433, 562.38, 286.15, 282.91, 0, 2870.58, 2879.76, 3531.68, 3538.6,
4198.24, 4857.18, 5516.01, 6175.82, 6834.9, 0, 0
},
{
891.09, 0, 0, 1561.41, 2220.13, 44.224, 562.19, 285.99, 282.95, 0, 2869.38, 2878.57, 3530.24, 3537.17,
4196.58, 4855.29, 5513.88, 6173.46, 6832.31, 0, 0
},
{
890.63, 0, 0, 1560.69, 2219.17, 44.016, 562.01, 285.83, 282.98, 0, 2868.2, 2877.4, 3528.83, 3535.77,
4194.95, 4853.43, 5511.8, 6171.15, 6829.77, 0, 0
}
};
memcpy(pDetail->adTableHhvMol, adTableHhvMol, sizeof(adTableHhvMol));
double adTableLhvMol[4][NUMBEROFCOMPONENTS] = {
{
802.82, 0, 0, 1429.12, 2043.71, 0, 517.87, 241.56, 282.8, 0, 2648.83, 2658.45, 3265.54, 3272.45, 3887.71,
4502.28, 5116.73, 5732.17, 6346.88, 0, 0
},
{
802.69, 0, 0, 1428.84, 2043.37, 0, 517.95, 241.72, 282.91, 0, 2648.42, 2657.6, 3265.08, 3272, 3887.21,
4501.72, 5116.11, 5731.49, 6346.14, 0, 0
},
{
802.65, 0, 0, 1428.74, 2043.23, 0, 517.97, 241.76, 282.95, 0, 2648.26, 2657.45, 3264.89, 3271.83, 3887.01,
4501.49, 5115.87, 5731.22, 6345.85, 0, 0
},
{
802.6, 0, 0, 1428.64, 2043.11, 0, 517.99, 241.81, 282.98, 0, 2648.12, 2657.32, 3264.73, 3271.67, 3886.84,
4501.3, 5115.66, 5730.99, 6345.59, 0, 0
}
};
memcpy(pDetail->adTableLhvMol, adTableLhvMol, sizeof(adTableLhvMol));
return 0;
}
void Detail_paramdl(Detail *pDetail) {
const double adTable5Mri[21] = {
16.0430, 28.0135, 44.0100, 30.0700, 44.0970, 18.0153, 34.0820, 2.0159, 28.0100, 31.9988, 58.1230, 58.1230,
72.1500, 72.1500, 86.1770, 100.2040, 114.2310, 128.2580, 142.2850, 4.0026, 39.9480
};
const double adTable5Ei[21] = {
151.318300, 99.737780, 241.960600, 244.166700, 298.118300, 514.015600, 296.355000, 26.957940, 105.534800,
122.766700, 324.068900, 337.638900, 365.599900, 370.682300, 402.636293, 427.722630, 450.325022, 470.840891,
489.558373, 2.610111, 119.629900
};
const double adTable5Ki[21] = {
0.4619255, 0.4479153, 0.4557489, 0.5279209, 0.5837490, 0.3825868, 0.4618263, 0.3514916, 0.4533894, 0.4186954,
0.6406937, 0.6341423, 0.6738577, 0.6798307, 0.7175118, 0.7525189, 0.7849550, 0.8152731, 0.8437826, 0.3589888,
0.4216551
};
const double adTable5Gi[21] = {
0.000000, 0.027815, 0.189065, 0.079300, 0.141239, 0.332500, 0.088500, 0.034369, 0.038953, 0.021000, 0.256692,
0.281835, 0.332267, 0.366911, 0.289731, 0.337542, 0.383381, 0.427354, 0.469659, 0.000000, 0.000000
};
for (int j = 0; j < NUMBEROFCOMPONENTS; j++) {
pDetail->adTable5Qi[j] = 0.0;
pDetail->adTable5Fi[j] = 0.0;
@ -461,10 +387,28 @@ void Detail_paramdl(Detail *pDetail) {
pDetail->adTable5Si[6] = 0.3900;
pDetail->adTable5Wi[5] = 1.0000;
for (int j = pDetail->iNCC - 1; j >= 0; j--) {
const double adTable5Ki[21] = {
0.4619255, 0.4479153, 0.4557489, 0.5279209, 0.5837490, 0.3825868, 0.4618263, 0.3514916, 0.4533894, 0.4186954,
0.6406937, 0.6341423, 0.6738577, 0.6798307, 0.7175118, 0.7525189, 0.7849550, 0.8152731, 0.8437826, 0.3589888,
0.4216551
};
const double adTable5Mri[21] = {
16.0430, 28.0135, 44.0100, 30.0700, 44.0970, 18.0153, 34.0820, 2.0159, 28.0100, 31.9988, 58.1230, 58.1230,
72.1500, 72.1500, 86.1770, 100.2040, 114.2310, 128.2580, 142.2850, 4.0026, 39.9480
};
pDetail->dMri[j] = adTable5Mri[pDetail->aiCID[j]];
pDetail->dKi[j] = adTable5Ki[pDetail->aiCID[j]];
}
for (int j = 0; j < pDetail->iNCC; j++) {
const double adTable5Gi[21] = {
0.000000, 0.027815, 0.189065, 0.079300, 0.141239, 0.332500, 0.088500, 0.034369, 0.038953, 0.021000, 0.256692,
0.281835, 0.332267, 0.366911, 0.289731, 0.337542, 0.383381, 0.427354, 0.469659, 0.000000, 0.000000
};
const double adTable5Ei[21] = {
151.318300, 99.737780, 241.960600, 244.166700, 298.118300, 514.015600, 296.355000, 26.957940, 105.534800,
122.766700, 324.068900, 337.638900, 365.599900, 370.682300, 402.636293, 427.722630, 450.325022, 470.840891,
489.558373, 2.610111, 119.629900
};
pDetail->dGi[j] = adTable5Gi[pDetail->aiCID[j]];
pDetail->dEi[j] = adTable5Ei[pDetail->aiCID[j]];
}
@ -485,6 +429,64 @@ void Detail_paramdl(Detail *pDetail) {
}
}
void Detail_dhvMol(Detail *pDetail, NGParSTRUCT *ptNGPar) {
const double adTableHhvMol[4][NUMBEROFCOMPONENTS] = {
{ //0
892.97, 0, 0, 1564.34, 2224.01, 45.074, 562.94, 286.63, 282.8, 0, 2874.2, 2883.82, 3535.98, 3542.89,
4203.23, 4862.87, 5522.4, 6182.91, 6842.69, 0, 0
},
{ //15
891.56, 0, 0, 1562.14, 2221.1, 44.43, 562.38, 286.15, 282.91, 0, 2870.58, 2879.76, 3531.68, 3538.6,
4198.24, 4857.18, 5516.01, 6175.82, 6834.9, 0, 0
},
{ //20
891.09, 0, 0, 1561.41, 2220.13, 44.22, 562.19, 285.99, 282.95, 0, 2869.38, 2878.57, 3530.24, 3537.17,
4196.58, 4855.29, 5513.88, 6173.46, 6832.31, 0, 0
},
{ //25
890.63, 0, 0, 1560.69, 2219.17, 44.016, 562.01, 285.83, 282.98, 0, 2868.2, 2877.4, 3528.83, 3535.77,
4194.95, 4853.43, 5511.8, 6171.15, 6829.77, 0, 0
}
};
const double adTableLhvMol[4][NUMBEROFCOMPONENTS] = {
{ //0
802.82, 0, 0, 1429.12, 2043.71, 0, 517.87, 241.56, 282.8, 0, 2648.83, 2658.45, 3265.54, 3272.45, 3887.71,
4502.28, 5116.73, 5732.17, 6346.88, 0, 0
},
{ //15
802.69, 0, 0, 1428.84, 2043.37, 0, 517.95, 241.72, 282.91, 0, 2648.42, 2657.6, 3265.08, 3272, 3887.21,
4501.72, 5116.11, 5731.49, 6346.14, 0, 0
},
{ //20
802.65, 0, 0, 1428.74, 2043.23, 0, 517.97, 241.76, 282.95, 0, 2648.26, 2657.45, 3264.89, 3271.83, 3887.01,
4501.49, 5115.87, 5731.22, 6345.85, 0, 0
},
{ //25
802.6, 0, 0, 1428.64, 2043.11, 0, 517.99, 241.81, 282.98, 0, 2648.12, 2657.32, 3264.73, 3271.67, 3886.84,
4501.3, 5115.66, 5730.99, 6345.59, 0, 0
}
};
for (int i = 0; i <NUMBEROFCOMPONENTS; i++) {
switch (ptNGPar->dCbtj)
{
case 0:
ptNGPar->dHhvMol += adTableHhvMol[0][i] * ptNGPar->adMixture[i];
ptNGPar->dLhvMol +=adTableLhvMol[0][i] * ptNGPar->adMixture[i];
break;
case 1:
ptNGPar->dHhvMol += adTableHhvMol[1][i] * ptNGPar->adMixture[i];
ptNGPar->dLhvMol += adTableLhvMol[1][i] * ptNGPar->adMixture[i];
break;
case 2:
ptNGPar->dHhvMol += adTableHhvMol[2][i] * ptNGPar->adMixture[i];
ptNGPar->dLhvMol += adTableLhvMol[2][i] * ptNGPar->adMixture[i];
break;
default: ;
}
}
}
void Detail_chardl(Detail *pDetail, NGParSTRUCT *ptNGPar)
{
double tmfrac = 0.0;
@ -507,20 +509,7 @@ void Detail_chardl(Detail *pDetail, NGParSTRUCT *ptNGPar)
ptNGPar->dLhvMol = 0.0;
for (int i = 0; i < pDetail->iNCC; i++) {
ptNGPar->dMrx += pDetail->dXi[i] * pDetail->dMri[i];
switch (ptNGPar->dCbtj) {
case 2:
ptNGPar->dHhvMol += pDetail->adTableHhvMol[0][i] * ptNGPar->adMixture[i];
ptNGPar->dLhvMol += pDetail->adTableHhvMol[0][i] * ptNGPar->adMixture[i];
break;
case 1:
ptNGPar->dHhvMol += pDetail->adTableHhvMol[1][i] * ptNGPar->adMixture[i];
ptNGPar->dLhvMol += pDetail->adTableLhvMol[1][i] * ptNGPar->adMixture[i];
break;
case 0:
ptNGPar->dHhvMol += pDetail->adTableHhvMol[2][i] * ptNGPar->adMixture[i];
ptNGPar->dLhvMol += pDetail->adTableLhvMol[2][i] * ptNGPar->adMixture[i];
break;
}
k2p5 += pDetail->dXi[i] * pow(pDetail->dKi[i], 2.5);
u2p5 += pDetail->dXi[i] * pow(pDetail->dEi[i], 2.5);
pDetail->dW += pDetail->dXi[i] * pDetail->dGi[i];
@ -528,33 +517,33 @@ void Detail_chardl(Detail *pDetail, NGParSTRUCT *ptNGPar)
pDetail->dF += pDetail->dXi[i] * pDetail->dXi[i] * pDetail->dFi[i];
for (int j = i; j < pDetail->iNCC; j++) {
double Xij = (i == j) ? pDetail->dXi[i] * pDetail->dXi[j] : 2.0 * pDetail->dXi[i] * pDetail->dXi[j];
const double Xij = (i == j) ? pDetail->dXi[i] * pDetail->dXi[j] : 2.0 * pDetail->dXi[i] * pDetail->dXi[j];
if (pDetail->dKij[i][j] != 1.0) {
double term = pow(pDetail->dKi[i] * pDetail->dKi[j], 2.5);
const double term = pow(pDetail->dKi[i] * pDetail->dKi[j], 2.5);
k5p0 += Xij * (pow(pDetail->dKij[i][j], 5.0) - 1.0) * term;
}
if (pDetail->dUij[i][j] != 1.0) {
double term = pow(pDetail->dEi[i] * pDetail->dEi[j], 2.5);
const double term = pow(pDetail->dEi[i] * pDetail->dEi[j], 2.5);
u5p0 += Xij * (pow(pDetail->dUij[i][j], 5.0) - 1.0) * term;
}
if (pDetail->dGij[i][j] != 1.0) {
double avgG = (pDetail->dGi[i] + pDetail->dGi[j]) / 2.0;
const double avgG = (pDetail->dGi[i] + pDetail->dGi[j]) / 2.0;
pDetail->dW += Xij * (pDetail->dGij[i][j] - 1.0) * avgG;
}
double Eij = pDetail->dEij[i][j] * sqrt(pDetail->dEi[i] * pDetail->dEi[j]);
double Gij = pDetail->dGij[i][j] * (pDetail->dGi[i] + pDetail->dGi[j]) / 2.0;
double e0p5 = sqrt(Eij);
double e2p0 = Eij * Eij;
double e3p0 = Eij * e2p0;
double e3p5 = e3p0 * e0p5;
double e4p5 = Eij * e3p5;
double e6p0 = e3p0 * e3p0;
double e7p5 = e4p5 * Eij * e2p0;
double e9p5 = e7p5 * e2p0;
double e11p0 = e4p5 * e4p5 * e2p0;
double e12p0 = e11p0 * Eij;
double e12p5 = e12p0 * e0p5;
double s3 = Xij * pow(pow(pDetail->dKi[i], 3.0) * pow(pDetail->dKi[j], 3.0), 0.5);
const double Eij = pDetail->dEij[i][j] * sqrt(pDetail->dEi[i] * pDetail->dEi[j]);
const double Gij = pDetail->dGij[i][j] * (pDetail->dGi[i] + pDetail->dGi[j]) / 2.0;
const double e0p5 = sqrt(Eij);
const double e2p0 = Eij * Eij;
const double e3p0 = Eij * e2p0;
const double e3p5 = e3p0 * e0p5;
const double e4p5 = Eij * e3p5;
const double e6p0 = e3p0 * e3p0;
const double e7p5 = e4p5 * Eij * e2p0;
const double e9p5 = e7p5 * e2p0;
const double e11p0 = e4p5 * e4p5 * e2p0;
const double e12p0 = e11p0 * Eij;
const double e12p5 = e12p0 * e0p5;
const double s3 = Xij * pow(pow(pDetail->dKi[i], 3.0) * pow(pDetail->dKi[j], 3.0), 0.5);
pDetail->adBcoef[0] += s3;
pDetail->adBcoef[1] += s3 * e0p5;
pDetail->adBcoef[2] += s3 * Eij;
@ -576,8 +565,6 @@ void Detail_chardl(Detail *pDetail, NGParSTRUCT *ptNGPar)
}
}
ptNGPar->dHhvMol = ptNGPar->dHhvMol / ptNGPar->dMrx;
ptNGPar->dLhvMol = ptNGPar->dLhvMol / ptNGPar->dMrx;
for (int i = 0; i < 18; i++) {
pDetail->adBcoef[i] *= pDetail->adAn[i];
@ -589,20 +576,20 @@ void Detail_chardl(Detail *pDetail, NGParSTRUCT *ptNGPar)
void Detail_bvir(Detail *pDetail) {
pDetail->dB = pDetail->ddBdT = pDetail->dd2BdT2 = 0.0;
double t = pDetail->dT;
double t0p5 = sqrt(t);
double t2p0 = t * t;
double t3p0 = t * t2p0;
double t3p5 = t3p0 * t0p5;
double t4p5 = t * t3p5;
double t6p0 = t3p0 * t3p0;
double t11p0 = t4p5 * t4p5 * t2p0;
double t7p5 = t6p0 * t * t0p5;
double t9p5 = t7p5 * t2p0;
double t12p0 = t9p5 * t0p5 * t2p0;
double t12p5 = t12p0 * t0p5;
double t1p5 = t * t0p5;
double t4p0 = t2p0 * t2p0;
const double t = pDetail->dT;
const double t0p5 = sqrt(t);
const double t2p0 = t * t;
const double t3p0 = t * t2p0;
const double t3p5 = t3p0 * t0p5;
const double t4p5 = t * t3p5;
const double t6p0 = t3p0 * t3p0;
const double t11p0 = t4p5 * t4p5 * t2p0;
const double t7p5 = t6p0 * t * t0p5;
const double t9p5 = t7p5 * t2p0;
const double t12p0 = t9p5 * t0p5 * t2p0;
const double t12p5 = t12p0 * t0p5;
// double t1p5 = t * t0p5;
// double t4p0 = t2p0 * t2p0;
double Bx[18];
Bx[0] = pDetail->adBcoef[0];
Bx[1] = pDetail->adBcoef[1] / t0p5;
@ -650,25 +637,22 @@ void Detail_bvir(Detail *pDetail) {
void Detail_temp(Detail *pDetail) {
Detail_bvir(pDetail);
double tr = pDetail->dT / pDetail->dU;
double tr0p5, tr1p5, tr2p0, tr3p0, tr4p0, tr5p0, tr6p0;
double tr7p0, tr8p0, tr9p0, tr11p0, tr13p0, tr21p0;
double tr22p0, tr23p0 ;
tr0p5 = sqrt(tr);
tr1p5 = tr * tr0p5;
tr2p0 = tr * tr;
tr3p0 = tr * tr2p0;
tr4p0 = tr * tr3p0;
tr5p0 = tr * tr4p0;
tr6p0 = tr * tr5p0;
tr7p0 = tr * tr6p0;
tr8p0 = tr * tr7p0;
tr9p0 = tr * tr8p0;
tr11p0 = tr6p0 * tr5p0;
tr13p0 = tr6p0 * tr7p0;
tr21p0 = tr9p0 * tr9p0 * tr3p0;
tr22p0 = tr * tr21p0;
tr23p0 = tr * tr22p0;
const double tr = pDetail->dT / pDetail->dU;
const double tr0p5 = sqrt(tr);
const double tr1p5 = tr * tr0p5;
const double tr2p0 = tr * tr;
const double tr3p0 = tr * tr2p0;
const double tr4p0 = tr * tr3p0;
const double tr5p0 = tr * tr4p0;
const double tr6p0 = tr * tr5p0;
const double tr7p0 = tr * tr6p0;
const double tr8p0 = tr * tr7p0;
const double tr9p0 = tr * tr8p0;
const double tr11p0 = tr6p0 * tr5p0;
const double tr13p0 = tr6p0 * tr7p0;
const double tr21p0 = tr9p0 * tr9p0 * tr3p0;
const double tr22p0 = tr * tr21p0;
const double tr23p0 = tr * tr22p0;
pDetail->adFn[12] = pDetail->adAn[12] * pDetail->dF * tr6p0;
pDetail->adFn[13] = pDetail->adAn[13] / tr2p0;
@ -720,30 +704,26 @@ void Detail_temp(Detail *pDetail) {
}
void Detail_ddetail(Detail *pDetail, NGParSTRUCT *ptNGPar) {
int imax, i;
double epsp, epsr, epsmin;
double x1, x2, x3, y1, y2, y3;
double delx, delprv, delmin, delbis, xnumer, xdenom, sgndel;
double y2my3, y3my1, y1my2, boundn;
imax = 150;
epsp = 1.e-6;
epsr = 1.e-6;
epsmin = 1.e-7;
double xnumer, xdenom;
const int imax = 150;
pDetail->dRho = 0.0;
Detail_braket(pDetail, ptNGPar);
if (ptNGPar->lStatus == MAX_NUM_OF_ITERATIONS_EXCEEDED ||
ptNGPar->lStatus == NEGATIVE_DENSITY_DERIVATIVE) {
return;
}
x1 = pDetail->dRhoL;
x2 = pDetail->dRhoH;
y1 = pDetail->dPRhoL - pDetail->dP;
y2 = pDetail->dPRhoH - pDetail->dP;
delx = x1 - x2;
delprv = delx;
x3 = x1;
y3 = y1;
for (i = 0; i < imax; i++) {
double x1 = pDetail->dRhoL;
double x2 = pDetail->dRhoH;
double y1 = pDetail->dPRhoL - pDetail->dP;
double y2 = pDetail->dPRhoH - pDetail->dP;
double delx = x1 - x2;
double delprv = delx;
double x3 = x1;
double y3 = y1;
for (int i = 0; i < imax; i++) {
const double epsmin = 1.e-7;
const double epsr = 1.e-6;
const double epsp = 1.e-6;
if (y2 * y3 > 0.0) {
x3 = x1;
y3 = y1;
@ -758,16 +738,16 @@ void Detail_ddetail(Detail *pDetail, NGParSTRUCT *ptNGPar) {
y2 = y3;
y3 = y1;
}
delmin = epsmin * fabs(x2);
delbis = 0.5 * (x3 - x2);
const double delmin = epsmin * fabs(x2);
const double delbis = 0.5 * (x3 - x2);
if (fabs(delprv) < delmin || fabs(y1) < fabs(y2)) {
delx = delbis;
delprv = delbis;
} else {
if (x3 != x1) {
y2my3 = y2 - y3;
y3my1 = y3 - y1;
y1my2 = y1 - y2;
const double y2my3 = y2 - y3;
const double y3my1 = y3 - y1;
const double y1my2 = y1 - y2;
xdenom = -(y1my2) * (y2my3) * (y3my1);
xnumer = x1 * y2 * y3 * (y2my3)
+ x2 * y3 * y1 * (y3my1)
@ -789,11 +769,11 @@ void Detail_ddetail(Detail *pDetail, NGParSTRUCT *ptNGPar) {
return;
}
if (fabs(delx) < delmin) {
sgndel = delbis / fabs(delbis);
const double sgndel = delbis / fabs(delbis);
delx = 1.0000009 * sgndel * delmin;
delprv = delx;
}
boundn = delx * (x2 + delx - x3);
const double boundn = delx * (x2 + delx - x3);
if (boundn > 0.0) {
delx = delbis;
delprv = delbis;
@ -809,23 +789,21 @@ void Detail_ddetail(Detail *pDetail, NGParSTRUCT *ptNGPar) {
}
void Detail_braket(Detail *pDetail, NGParSTRUCT *ptNGPar) {
int imax, it;
double del, rhomax, videal;
double rho1, rho2, p1, p2;
imax = 200;
rho1 = 0.0;
p1 = 0.0;
rhomax = 1.0 / pDetail->dKp3;
double rho2;
const int imax = 200;
double rho1 = 0.0;
double p1 = 0.0;
double rhomax = 1.0 / pDetail->dKp3;
if (pDetail->dT > 1.2593 * pDetail->dU)
rhomax = 20.0 * rhomax;
videal = RGASKJ * pDetail->dT / pDetail->dP;
const double videal = RGASKJ * pDetail->dT / pDetail->dP;
if (fabs(pDetail->dB) < (0.167 * videal)) {
rho2 = 0.95 / (videal + pDetail->dB);
} else {
rho2 = 1.15 / videal;
}
del = rho2 / 20.0;
for (it = 0; it < imax; it++) {
double del = rho2 / 20.0;
for (int it = 0; it < imax; it++) {
if (rho2 > rhomax && ptNGPar->lStatus != MAX_DENSITY_IN_BRAKET_EXCEEDED) {
ptNGPar->lStatus = MAX_DENSITY_IN_BRAKET_EXCEEDED;
del = 0.01 * (rhomax - rho1) + (pDetail->dP / (RGASKJ * pDetail->dT)) / 20.0;
@ -833,7 +811,7 @@ void Detail_braket(Detail *pDetail, NGParSTRUCT *ptNGPar) {
continue;
}
Detail_pdetail(pDetail, rho2);
p2 = pDetail->dPCalc;
const double p2 = pDetail->dPCalc;
if (p2 > pDetail->dP) {
pDetail->dRhoL = rho1;
pDetail->dPRhoL = p1;
@ -856,7 +834,6 @@ void Detail_braket(Detail *pDetail, NGParSTRUCT *ptNGPar) {
}
ptNGPar->lStatus = MAX_NUM_OF_ITERATIONS_EXCEEDED;
pDetail->dRho = rho2;
return;
}
void Detail_pdetail(Detail *pDetail, double dD) {
@ -864,20 +841,19 @@ void Detail_pdetail(Detail *pDetail, double dD) {
}
double Detail_zdetail(Detail *pDetail, double d) {
double D1, D2, D3, D4, D5, D6, D7, D8, D9, exp1, exp2, exp3, exp4;
D1 = pDetail->dKp3 * d;
D2 = D1 * D1;
D3 = D2 * D1;
D4 = D3 * D1;
D5 = D4 * D1;
D6 = D5 * D1;
D7 = D6 * D1;
D8 = D7 * D1;
D9 = D8 * D1;
exp1 = exp(-D1);
exp2 = exp(-D2);
exp3 = exp(-D3);
exp4 = exp(-D4);
const double D1 = pDetail->dKp3 * d;
const double D2 = D1 * D1;
const double D3 = D2 * D1;
const double D4 = D3 * D1;
const double D5 = D4 * D1;
const double D6 = D5 * D1;
const double D7 = D6 * D1;
const double D8 = D7 * D1;
const double D9 = D8 * D1;
const double exp1 = exp(-D1);
const double exp2 = exp(-D2);
const double exp3 = exp(-D3);
const double exp4 = exp(-D4);
pDetail->dZ = 1.0 + pDetail->dB * d
+ pDetail->adFn[12] * D1 * (exp3 - 1.0 - 3.0 * D3 * exp3)
+ (pDetail->adFn[13] + pDetail->adFn[14] + pDetail->adFn[15]) * D1 * (exp2 - 1.0 - 2.0 * D2 * exp2)
@ -908,22 +884,19 @@ double Detail_zdetail(Detail *pDetail, double d) {
}
double Detail_dZdT(Detail *pDetail, double d) {
double tmp;
int i;
double D1, D2, D3, D4, D5, D6, D7, D8, exp1, exp2, exp3, exp4;
D1 = pDetail->dKp3 * d;
D2 = D1 * D1;
D3 = D2 * D1;
D4 = D3 * D1;
D5 = D4 * D1;
D6 = D5 * D1;
D7 = D6 * D1;
D8 = D7 * D1;
exp1 = exp(-D1);
exp2 = exp(-D2);
exp3 = exp(-D3);
exp4 = exp(-D4);
for (i = 12; i < 58; i++) {
const double D1 = pDetail->dKp3 * d;
const double D2 = D1 * D1;
const double D3 = D2 * D1;
const double D4 = D3 * D1;
const double D5 = D4 * D1;
const double D6 = D5 * D1;
const double D7 = D6 * D1;
const double D8 = D7 * D1;
const double exp1 = exp(-D1);
const double exp2 = exp(-D2);
const double exp3 = exp(-D3);
const double exp4 = exp(-D4);
for (int i = 12; i < 58; i++) {
if (pDetail->adUn[i] && pDetail->adFn[i]) {
pDetail->fx[i] = (pDetail->adFn[i] * pDetail->adUn[i] * D1) / pDetail->dT;
} else {
@ -933,7 +906,7 @@ double Detail_dZdT(Detail *pDetail, double d) {
pDetail->ddZdT = d * pDetail->ddBdT;
if (pDetail->dF)
pDetail->ddZdT += pDetail->fx[12] - (pDetail->fx[12] * (1.0 - 3.0 * D3) * exp3);
tmp = (1.0 - 2.0 * D2) * exp2;
double tmp = (1.0 - 2.0 * D2) * exp2;
pDetail->ddZdT += (pDetail->fx[13] - (pDetail->fx[13] * tmp));
pDetail->ddZdT += pDetail->fx[14] - (pDetail->fx[14] * tmp);
pDetail->ddZdT += pDetail->fx[15] - (pDetail->fx[15] * tmp);
@ -966,22 +939,19 @@ double Detail_dZdT(Detail *pDetail, double d) {
}
double Detail_d2ZdT2(Detail *pDetail, double d) {
double tmp;
int i;
double D1, D2, D3, D4, D5, D6, D7, D8, exp1, exp2, exp3, exp4;
D1 = pDetail->dKp3 * d;
D2 = D1 * D1;
D3 = D2 * D1;
D4 = D3 * D1;
D5 = D4 * D1;
D6 = D5 * D1;
D7 = D6 * D1;
D8 = D7 * D1;
exp1 = exp(-D1);
exp2 = exp(-D2);
exp3 = exp(-D3);
exp4 = exp(-D4);
for (i = 12; i < 58; i++) {
const double D1 = pDetail->dKp3 * d;
const double D2 = D1 * D1;
const double D3 = D2 * D1;
const double D4 = D3 * D1;
const double D5 = D4 * D1;
const double D6 = D5 * D1;
const double D7 = D6 * D1;
const double D8 = D7 * D1;
const double exp1 = exp(-D1);
const double exp2 = exp(-D2);
const double exp3 = exp(-D3);
const double exp4 = exp(-D4);
for (int i = 12; i < 58; i++) {
if (pDetail->adUn[i] && pDetail->adFn[i]) {
pDetail->fx[i] = (pDetail->adFn[i] * D1 * pDetail->adUn[i] * (pDetail->adUn[i] + 1.0)) / (
pDetail->dT * pDetail->dT);
@ -992,13 +962,13 @@ double Detail_d2ZdT2(Detail *pDetail, double d) {
pDetail->dd2ZdT2 = d * pDetail->dd2BdT2;
if (pDetail->dF)
pDetail->dd2ZdT2 += pDetail->fx[12] - (pDetail->fx[12] * (1.0 - 3.0 * D3) * exp3);
tmp = (1.0 - 2.0 * D2) * exp2;
double tmp = (1.0 - 2.0 * D2) * exp2;
pDetail->dd2ZdT2 += -pDetail->fx[13] + (pDetail->fx[13] * tmp);
pDetail->dd2ZdT2 += -pDetail->fx[14] + (pDetail->fx[14] * tmp);
pDetail->dd2ZdT2 += -pDetail->fx[15] + (pDetail->fx[15] * tmp);
tmp = (1.0 - 4.0 * D4) * exp4;
pDetail->dd2ZdT2 += -pDetail->fx[16] + (pDetail->fx[16] * tmp);
pDetail->dd2ZdT2 += -pDetail->fx[17] + (pDetail->fx[17] * tmp);
pDetail->dd2ZdT2 += -pDetail->fx[17] + pDetail->fx[17] * tmp;
pDetail->dd2ZdT2 = pDetail->dd2ZdT2 + (pDetail->fx[18] + pDetail->fx[19]) * D1 * 2.0
+ (pDetail->fx[21] + pDetail->fx[22]) * D1 * (2.0 - 2.0 * D2) * exp2
+ (pDetail->fx[23] + pDetail->fx[24] + pDetail->fx[25]) * D1 * (2.0 - 4.0 * D4) * exp4
@ -1026,21 +996,19 @@ double Detail_d2ZdT2(Detail *pDetail, double d) {
double Detail_dZdD(Detail *pDetail, double d) {
double temp, temp1, temp2, temp3;
int i;
double D1, D2, D3, D4, D5, D6, D7, D8, exp1, exp2, exp3, exp4;
D1 = pDetail->dKp3 * d;
D2 = D1 * D1;
D3 = D2 * D1;
D4 = D3 * D1;
D5 = D4 * D1;
D6 = D5 * D1;
D7 = D6 * D1;
D8 = D7 * D1;
exp1 = exp(-D1);
exp2 = exp(-D2);
exp3 = exp(-D3);
exp4 = exp(-D4);
for (i = 12; i < 58; i++) {
const double D1 = pDetail->dKp3 * d;
const double D2 = D1 * D1;
const double D3 = D2 * D1;
const double D4 = D3 * D1;
const double D5 = D4 * D1;
const double D6 = D5 * D1;
const double D7 = D6 * D1;
const double D8 = D7 * D1;
const double exp1 = exp(-D1);
const double exp2 = exp(-D2);
const double exp3 = exp(-D3);
const double exp4 = exp(-D4);
for (int i = 12; i < 58; i++) {
pDetail->fx[i] = pDetail->adFn[i];
}
pDetail->ddZdD = pDetail->dB / pDetail->dKp3;
@ -1156,11 +1124,10 @@ double Detail_dZdD(Detail *pDetail, double d) {
return pDetail->ddZdD;
}
void Detail_relativedensity(Detail *pDetail, NGParSTRUCT *ptNGPar) {
double dBX, dZa;
void Detail_relativedensity(const Detail *pDetail, NGParSTRUCT *ptNGPar) {
const double dMWair = 28.96256;
dBX = -0.12527 + 5.91e-4 * ptNGPar->dTb - 6.62e-7 * ptNGPar->dTb * ptNGPar->dTb;
dZa = 1.0 + (dBX * pDetail->dP) / (RGASKJ * ptNGPar->dTb);
const double dBX = -0.12527 + 5.91e-4 * ptNGPar->dTb - 6.62e-7 * ptNGPar->dTb * ptNGPar->dTb;
const double dZa = 1.0 + (dBX * pDetail->dP) / (RGASKJ * ptNGPar->dTb);
ptNGPar->dRD_Ideal = ptNGPar->dMrx / dMWair;
ptNGPar->dRD_Real = ptNGPar->dRD_Ideal * (dZa / ptNGPar->dZb);
}

View File

@ -6,7 +6,6 @@
#define _DETAIL_H
#include "NGCal.h"
#include <stdbool.h>
typedef struct Detail {
@ -50,9 +49,6 @@ typedef struct Detail {
double adTable5Si[21];
double adTable5Wi[21];
double adTableHhvMol[4][21];
double adTableLhvMol[4][21];
double dXi[21];
double dPCalc;
double dT;
@ -88,7 +84,7 @@ Detail *Detail_Construct(void);
void Detail_Destroy(Detail *pDetail);
int Detail_compositionchange(Detail *pDetail, NGParSTRUCT *pAGA10);
int Detail_compositionchange(Detail *pDetail, const NGParSTRUCT *pAGA10);
int Detail_table(Detail *pDetail);
@ -96,6 +92,8 @@ void Detail_paramdl(Detail *pDetail);
void Detail_chardl(Detail *pDetail, NGParSTRUCT *pAGA10);
void Detail_dhvMol(Detail *pDetail, NGParSTRUCT *pAGA10);
void Detail_bvir(Detail *pDetail);
void Detail_temp(Detail *pDetail);
@ -106,7 +104,7 @@ void Detail_pdetail(Detail *pDetail, double dRho);
void Detail_ddetail(Detail *pDetail, NGParSTRUCT *pAGA10);
void Detail_relativedensity(Detail *pDetail, NGParSTRUCT *pAGA10);
void Detail_relativedensity(const Detail *pDetail, NGParSTRUCT *pAGA10);
double Detail_zdetail(Detail *pDetail, double dRho);

View File

@ -3,9 +3,36 @@
//
#include "NGCal.h"
#include "FlowCal.h"
#include "math.h"
double format_double(double value, int digits) {
// 处理默认位数4位
if (digits == 0) {
digits = 4;
}
// 验证位数有效性
if (digits < 1 || digits > 5) {
fprintf(stderr, "Error: Invalid digit value (must be 1-5 or 0 for default)\n");
return NAN; // 返回 NaN 表示错误
}
char format_str[10];
char buffer[50];
// 生成动态格式字符串(如 "%.4f"
snprintf(format_str, sizeof(format_str), "%%.%df", digits);
// 格式化数值到字符串
snprintf(buffer, sizeof(buffer), format_str, value);
// 转换回 double
double result = strtod(buffer, NULL);
return result;
}
void OFlowCal(FlowParSTRUCT *ptFlowPar, NGParSTRUCT *ptNGPar) {
double tempPatm = ptFlowPar->dPatm * 1000000;
double tempPf = ptFlowPar->dPf * 1000000;
@ -15,8 +42,7 @@ void OFlowCal(FlowParSTRUCT *ptFlowPar, NGParSTRUCT *ptNGPar) {
double tempTf = ptFlowPar->dTf + 273.15;
if (ptFlowPar->dPfType == 0)
{
if (ptFlowPar->dPfType == 0) {
ptFlowPar->dPf = tempPatm + tempPf;
ptNGPar->dPf = tempPatm + tempPf;
} else {
@ -50,6 +76,7 @@ void OFlowCal(FlowParSTRUCT *ptFlowPar, NGParSTRUCT *ptNGPar) {
ptFlowPar->dPb_M = (101325);
ptFlowPar->dTb_M = (293.15);
break;
default: ;
}
double ngArray[NUMBEROFCOMPONENTS];
@ -61,24 +88,24 @@ void OFlowCal(FlowParSTRUCT *ptFlowPar, NGParSTRUCT *ptNGPar) {
Crit(ptNGPar, 0);
ptFlowPar->dFpv = ptNGPar->dFpv;
ptFlowPar->dFpv = format_double(ptNGPar->dFpv, 4);
ptFlowPar->dOrificeD = format_double(ptFlowPar->dOrificeD * (
1 + 0.000001 * CaiLiaoPzxs(ptFlowPar->dOrificeMaterial) * (
ptFlowPar->dTf - 293.15)), 2);
ptFlowPar->dPipeD = format_double(ptFlowPar->dPipeD * (1 + 0.000001 * CaiLiaoPzxs(ptFlowPar->dPipeMaterial) * (
ptFlowPar->dTf - 293.15)), 2);
ptFlowPar->dBeta = format_double(ptFlowPar->dOrificeD / ptFlowPar->dPipeD, 4);
ptFlowPar->dOrificeD = ptFlowPar->dOrificeD * (
1 + 0.000001 * CaiLiaoPzxs(ptFlowPar->dOrificeMaterial) * (ptFlowPar->dTf - 293.15));
ptFlowPar->dPipeD = ptFlowPar->dPipeD * (1 + 0.000001 * CaiLiaoPzxs(ptFlowPar->dPipeMaterial) * (
ptFlowPar->dTf - 293.15));
ptFlowPar->dBeta = ptFlowPar->dOrificeD / ptFlowPar->dPipeD;
ptFlowPar->dE = format_double(calculateE(ptFlowPar->dBeta), 4);
ptFlowPar->dFG = format_double(calculateFG(ptNGPar->dRD_Real), 4);
ptFlowPar->dFT = format_double(calculateFT(ptFlowPar->dTb_M, ptFlowPar->dTf), 4);
ptFlowPar->dE = calculateE(ptFlowPar->dBeta);
ptFlowPar->dFG = calculateFG(ptNGPar->dRD_Real);
ptFlowPar->dFT = calculateFT(ptFlowPar->dTb_M, ptFlowPar->dTf);
ptFlowPar->dKappa = calculateKappa(ptNGPar->dZf);
ptFlowPar->dDViscosity = Dlndjs(ptFlowPar->dPf / 1e6, ptFlowPar->dTf);
ptFlowPar->dDExpCoefficient = calculateEpsilon(ptFlowPar->dPf, ptFlowPar->dDp,
ptFlowPar->dBeta, ptFlowPar->dKappa);
ptFlowPar->dKappa = format_double(calculateKappa(ptNGPar->dZf), 4);
ptFlowPar->dDViscosity = format_double(Dlndjs(ptFlowPar->dPf / 1e6, ptFlowPar->dTf), 5);
ptFlowPar->dDExpCoefficient = format_double(calculateEpsilon(ptFlowPar->dPf, ptFlowPar->dDp,
ptFlowPar->dBeta, ptFlowPar->dKappa), 4);
double D = ptFlowPar->dPipeD / 1000.0;
double d = ptFlowPar->dOrificeD / 1000.0;
@ -92,38 +119,25 @@ void OFlowCal(FlowParSTRUCT *ptFlowPar, NGParSTRUCT *ptNGPar) {
double Qf_initial = (C_initial * ptFlowPar->dE * ptFlowPar->dDExpCoefficient * M_PI * pow(d, 2) / 4)
* sqrt(2 * deltaP / (ptNGPar->dRhof * (1 - pow(beta, 4))));
ptFlowPar->dVFlowf = Qf_initial;
double tolerance = 1e-6;
int maxIter = 100;
double currentC = C_initial;
double currentReD = calculateReD(Qf_initial, D, ptNGPar->dRhof, ptFlowPar->dDViscosity);
int iter = 0;
double prevC = 0;
do {
int maxIter = 100;
prevC = currentC;
currentC = calculateCd(beta, currentReD, ptFlowPar->dPipeD, ptFlowPar->dPtmode);
double Qf = (currentC * ptFlowPar->dDExpCoefficient * M_PI * pow(d, 2) / 4)
* sqrt(2 * deltaP / (ptNGPar->dRhof * (1 - pow(beta, 4))));
ptFlowPar->dVFlowf = Qf;
currentReD = calculateReD(Qf, D, ptNGPar->dRhof, ptFlowPar->dDViscosity);
iter++;
if (iter > maxIter) {
fprintf(stderr, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
fprintf(stderr, "\n");
}
} while (fabs(currentC - prevC) / currentC > tolerance);
double K = calculateK(ptFlowPar->dPipeType);
double G_me = calculateRoughnessFactor(ptFlowPar->dPipeD, K, currentC);
double C_corrected = currentC * G_me;
@ -131,26 +145,16 @@ void OFlowCal(FlowParSTRUCT *ptFlowPar, NGParSTRUCT *ptNGPar) {
ptFlowPar->dCd = C_corrected;
ptFlowPar->dRoughNessPipe = G_me;
ptFlowPar->dRnPipe = currentReD;
double Qn = ptFlowPar->dVFlowf * (ptFlowPar->dFpv * ptFlowPar->dFpv * P1 / ptFlowPar->dPb_M)
* (ptFlowPar->dTb_M) / Tf;
ptFlowPar->dVFlowb = Qn;
ptFlowPar->dMFlowb = ptFlowPar->dVFlowb * ptNGPar->dRhob;
ptFlowPar->dEFlowb = ptFlowPar->dVFlowb * ptNGPar->dHhvMol;
ptFlowPar->dEFlowb = ptFlowPar->dVFlowb * ptNGPar->dHhvMol * ptFlowPar->dPb_M * 1e-6 / RGASKJ / ptFlowPar->dTb_M;
ptFlowPar->dVelocityFlow = ptFlowPar->dVFlowf / (M_PI * pow((ptFlowPar->dPipeD / 2000), 2));
}
double CaiLiaoPzxs(int tempCaiLiao) {
double CaiLiaoPzxs(const int tempCaiLiao) {
double CaiLiaoPzxs = 0;
switch (tempCaiLiao) {
case 0:
@ -212,6 +216,7 @@ double CaiLiaoPzxs(int tempCaiLiao) {
case 14:
CaiLiaoPzxs = 17.2;
break;
default: ;
}
return CaiLiaoPzxs;
}
@ -261,9 +266,7 @@ double calculateK(int dPipeType) {
}
double calculateRoughnessFactor(double D_pipe, double K, double C) {
double K_over_D = K / D_pipe;
@ -274,7 +277,9 @@ double calculateRoughnessFactor(double D_pipe, double K, double C) {
double term = (K_over_D * 1e6) - 400;
if (term < 0) {
fprintf(stderr, "K/D <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>÷<EFBFBD>Χ\n");
fprintf(
stderr,
"K/D <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>÷<EFBFBD>Χ\n");
return FLOW_CALC_ERROR;
}
@ -283,7 +288,6 @@ double calculateRoughnessFactor(double D_pipe, double K, double C) {
}
double calculateE(double beta) {
return 1 / sqrt(1 - pow(beta, 4));
}
@ -307,7 +311,6 @@ double calculateEpsilon(double dPf, double dDp, double beta, double dKappa) {
double calculateKappa(double dZf) {
double gamma = 1.3;
double Z = dZf;
@ -318,7 +321,7 @@ double calculateKappa(double dZf) {
double calculateReD(double Qf, double D, double rho, double mu) {
return (4 * Qf * rho) / (M_PI * D * mu);
return (4 * Qf * rho * 1000) / (M_PI * D * mu);
}
@ -379,7 +382,7 @@ double Dlndjs(double tempP_jy, double tempT) {
double Dlndjs_Dlnd_P[11] = {0.1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
double s1, s2, ky, kx;
double ky, kx;
int i, m = 0, n = 0;
if (tempT < Dlndjs_Dlnd_T[0]) {
@ -421,7 +424,78 @@ double Dlndjs(double tempP_jy, double tempT) {
kx = 0;
}
s1 = Dlndjs_Dlnd_Data[m][n] + (Dlndjs_Dlnd_Data[m][n + 1] - Dlndjs_Dlnd_Data[m][n]) * ky;
s2 = Dlndjs_Dlnd_Data[m + 1][n] + (Dlndjs_Dlnd_Data[m + 1][n + 1] - Dlndjs_Dlnd_Data[m + 1][n]) * ky;
double s1 = Dlndjs_Dlnd_Data[m][n] + (Dlndjs_Dlnd_Data[m][n + 1] - Dlndjs_Dlnd_Data[m][n]) * ky;
double s2 = Dlndjs_Dlnd_Data[m + 1][n] + (Dlndjs_Dlnd_Data[m + 1][n + 1] - Dlndjs_Dlnd_Data[m + 1][n]) * ky;
return (s1 + (s2 - s1) * kx) / 100000.0;
}
// 压力损失计算
double YaLiSunShi(double tempLiuChuXiShu, double tempZjb, double tempDp, int JieLiuZhuangZhi) {
double ylss = 0;
switch (JieLiuZhuangZhi) {
case 0:
case 1:
case 2:
ylss = tempDp * (sqrt(1 - tempZjb) - tempLiuChuXiShu * pow(tempZjb, 2))
/ (sqrt(1 - tempZjb) + tempLiuChuXiShu * pow(tempZjb, 2));
break;
default: ;
}
return ylss;
}
// 标况转工况流量转换
double FlowConvert_BaseToWork(double Pf, double Tf, double Zb, double Zf, double FlowBase, int Cbtj) {
double tempPn = 0;
double tempTn = 0;
switch (Cbtj) {
case 2:
tempPn = 101325;
tempTn = 273.15;
break;
case 1:
tempPn = 101325;
tempTn = 288.15;
break;
case 0:
tempPn = 101325;
tempTn = 293.15;
break;
case 3:
tempPn = 10155981;
tempTn = 288.7055555;
break;
default: ;
}
return FlowBase * tempPn * Tf * Zf / Pf / tempTn / Zb;
}
// 工况转标况流量转换
double FlowConvert_WorkToBase(double Pf, double Tf, double Zb, double Zf, double FlowWork, int Cbtj) {
double tempPn = 0;
double tempTn = 0;
switch (Cbtj) {
case 2:
tempPn = 101325;
tempTn = 273.15;
break;
case 1:
tempPn = 101325;
tempTn = 288.15;
break;
case 0:
tempPn = 101325;
tempTn = 293.15;
break;
case 3:
tempPn = 10155981;
tempTn = 288.7055555;
break;
default: ;
}
return FlowWork * Pf * tempTn * Zb / tempPn / Tf / Zf;
}

View File

@ -1,7 +1,7 @@
#include "NGCal.h"
#include "Therm.h"
#include "Detail.h"
#include "String.h"
#include "math.h"
static Therm *ptTherm;
static Detail *ptDetail;
@ -39,10 +39,6 @@ double SOS(NGParSTRUCT *ptNGPar) {
}
double Crit(NGParSTRUCT *ptNGPar, double dPlenumVelocity) {
double DH, DDH, S, H;
double tolerance = 1.0;
double R, P, T, Z;
int i;
if (NULL == ptDetail || NULL == ptTherm) {
NGCal_UnInit();
if (NGCal_NGCal != NGCal_Init(ptNGPar)) {
@ -54,18 +50,19 @@ double Crit(NGParSTRUCT *ptNGPar, double dPlenumVelocity) {
Therm_Run(ptTherm, ptNGPar, ptDetail);
DH = (ptNGPar->dSOS * ptNGPar->dSOS - dPlenumVelocity * dPlenumVelocity) / 2.0;
S = ptNGPar->dS;
H = ptNGPar->dH;
R = ptNGPar->dRhof;
P = ptNGPar->dPf;
Z = ptNGPar->dZf;
T = ptNGPar->dTf;
DDH = 10.0;
for (i = 1; i < MAX_NUM_OF_ITERATIONS; i++) {
Therm_HS_Mode(ptTherm, ptNGPar, ptDetail, H - DH, S, true);
double DH = (ptNGPar->dSOS * ptNGPar->dSOS - dPlenumVelocity * dPlenumVelocity) / 2.0;
double S = ptNGPar->dS;
double H = ptNGPar->dH;
double R = ptNGPar->dRhof;
double P = ptNGPar->dPf;
double Z = ptNGPar->dZf;
double T = ptNGPar->dTf;
// DDH = 10.0;
for (int i = 1; i < MAX_NUM_OF_ITERATIONS; i++) {
double tolerance = 1.0;
Therm_HS_Mode(ptTherm, ptNGPar, ptDetail, H - DH, S, 1);
Therm_Run(ptTherm, ptNGPar, ptDetail);
DDH = DH;
double DDH = DH;
DH = (ptNGPar->dSOS * ptNGPar->dSOS - dPlenumVelocity * dPlenumVelocity) / 2.0;
if (fabs(DDH - DH) < tolerance) break;
}
@ -73,17 +70,17 @@ double Crit(NGParSTRUCT *ptNGPar, double dPlenumVelocity) {
ptNGPar->dPf = P;
ptNGPar->dTf = T;
Therm_Run(ptTherm, ptNGPar, ptDetail);
Detail_dhvMol(ptDetail,ptNGPar);
return ptNGPar->dCstar;
}
double Cperf(NGParSTRUCT *ptNGPar) {
double k, root, exponent;
k = ptNGPar->dKappa;
root = 2.0 / (k + 1.0);
exponent = (k + 1.0) / (k - 1.0);
double Cperf(const NGParSTRUCT *ptNGPar) {
double k = ptNGPar->dKappa;
double root = 2.0 / (k + 1.0);
double exponent = (k + 1.0) / (k - 1.0);
return (sqrt(k * pow(root, exponent)));
}
double CRi(NGParSTRUCT *ptNGPar) {
double CRi(const NGParSTRUCT *ptNGPar) {
return (Cperf(ptNGPar) / sqrt(ptNGPar->dZf));
}

View File

@ -1,20 +1,10 @@
/*************************************************************************
* <EFBFBD>ļ<EFBFBD>: NGCal.h
**************************************************************************/
#ifndef _NGCal_H
#ifndef _NGCal_H
#define _NGCal_H
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NORMAL 9000
#define NGCal_NGCal 9001
#define MEMORY_ALLOCATION_ERROR 9002
@ -24,71 +14,49 @@
#define MAX_DENSITY_IN_BRAKET_EXCEEDED 9006
#define FLOW_CALC_ERROR 9007
#define FLOW_CALC_DIEDAI_ERROR 9008
#define NUMBEROFCOMPONENTS 21
#define M_PI 3.1415926535897932
#define MAX_NUM_OF_ITERATIONS 100
#define P_CHG_TOL 0.001
#define T_CHG_TOL 0.001
#define P_MAX 1.379e8
#define P_MIN 0.0
#define T_MAX 473.15
#define T_MIN 143.0
#define RGASKJ 8.314510e-3
#define RGAS 8.314510
typedef struct tagNGParSTRUCT
{
long lStatus;
int bForceUpdate;
double adMixture[21];
int dCbtj;
double dPb;
double dTb;
double dPf;
double dTf;
double dMrx;
double dZb;
double dZf;
double dFpv;
double dDb;
double dDf;
double dRhob;
double dRhof;
double dRD_Ideal;
double dRD_Real;
double dHo;
double dH;
double dS;
double dCpi;
double dCp;
double dCv;
double dk;
double dKappa;
double dSOS;
double dCstar;
double dHhvMol;
double dLhvMol;
long lStatus;
int bForceUpdate;
double adMixture[21];
int dCbtj;
double dPb;
double dTb;
double dPf;
double dTf;
double dMrx;
double dZb;
double dZf;
double dFpv;
double dDb;
double dDf;
double dRhob;
double dRhof;
double dRD_Ideal;
double dRD_Real;
double dHo;
double dH;
double dS;
double dCpi;
double dCp;
double dCv;
double dk;
double dKappa;
double dSOS;
double dCstar;
double dHhvMol;
double dLhvMol;
} NGParSTRUCT;

View File

@ -259,7 +259,7 @@ void Therm_CprCvrHS(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail) {
}
void Therm_HS_Mode(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail, double H, double S, bool bGuess) {
void Therm_HS_Mode(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail, double H, double S, int bGuess) {
double s0 = S;
double h0 = H;
double t1, t2, tmin, tmax;

View File

@ -51,7 +51,7 @@ double Therm_So(Therm *therm, NGParSTRUCT *ptNGPar);
void Therm_CprCvrHS(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail);
void Therm_HS_Mode(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail, double H, double S, bool bGuess);
void Therm_HS_Mode(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail, double H, double S, int bGuess);
double Therm_H(Therm *therm, NGParSTRUCT *ptNGPar, Detail *detail);

View File

@ -9,10 +9,10 @@ int main() {
// 设置基本参数
flowParams.dPatm = 0.0981; // 标准大气压(bar)
flowParams.dPf = 4; // 压力(MPa)
flowParams.dPfType = 1; // 0=表压1=绝压
flowParams.dPf = 1.48; // 压力(MPa)
flowParams.dPfType = 0; // 0=表压1=绝压
flowParams.dDp = 12.50; // 差压(kPa)
flowParams.dTf = 10; // 温度(°C)
flowParams.dTf = 15; // 温度(°C)
flowParams.dCbtj = 0; // 参比条件类型(0=标准状态)
// 设置管道参数
@ -23,7 +23,7 @@ int main() {
// 设置材料参数
flowParams.dPipeMaterial = 2; // 20号钢
flowParams.dOrificeMaterial = 10; // 镍铬合金
flowParams.dOrificeMaterial = 9; // 镍铬合金
// 设置天然气组分(示例: 95%甲烷5%其他)
// 初始化天然气组分数组(GB/T 21446-2008 典型示例组成)
@ -31,29 +31,77 @@ int main() {
flowParams.dNG_Compents[i] = 0.0; // 先全部初始化为0
}
// 按照GB/T 21446-2008标准中典型天然气组分赋值(体积百分比)
flowParams.dNG_Compents[0] = 90.6724; // 甲烷(CH4)
flowParams.dNG_Compents[1] = 3.1284; // 氮气(N2)
flowParams.dNG_Compents[2] = 0.4676; // 二氧化碳(CO2)
flowParams.dNG_Compents[3] =4.5279; // 乙烷(C2H6)
flowParams.dNG_Compents[4] = 0.8280; // 丙烷(C3H8)
// flowParams.dNG_Compents[0] = 92.47; // 甲烷(CH4)
// flowParams.dNG_Compents[1] = 0.68; // 氮气(N2)
// flowParams.dNG_Compents[2] = 1.75; // 二氧化碳(CO2)
// flowParams.dNG_Compents[3] =3.5; // 乙烷(C2H6)
// flowParams.dNG_Compents[4] = 0.98; // 丙烷(C3H8)
// flowParams.dNG_Compents[5] = 0.00; // 水(H2O)
// flowParams.dNG_Compents[6] = 0.00; // 硫化氢(H2S)
// flowParams.dNG_Compents[7] = 0.0; // 氢气(H2)
// flowParams.dNG_Compents[8] = 0.00; // 一氧化碳(CO)
// flowParams.dNG_Compents[9] = 0.00; // 氧气(O2)
// flowParams.dNG_Compents[10] = 0.34; // 异丁烷(i-C4H10)
// flowParams.dNG_Compents[11] = 0.22; // 正丁烷(n-C4H10)
// flowParams.dNG_Compents[12] = 0.0; // 异戊烷(i-C5H12)
// flowParams.dNG_Compents[13] = 0.06; // 正戊烷(n-C5H12)
// flowParams.dNG_Compents[14] = 0.0; // 己烷(C6H14)
// flowParams.dNG_Compents[15] = 0.0; // 庚烷(C7H16)
// flowParams.dNG_Compents[16] = 0.0; // 辛烷(C8H18)
// flowParams.dNG_Compents[17] = 0.0; // 壬烷(C9H20)
// flowParams.dNG_Compents[18] = 0.0; // 癸烷(C10H22)
// flowParams.dNG_Compents[19] = 0.0; // 氦气(He)
// flowParams.dNG_Compents[20] = 0.0; // 其他组分
flowParams.dNG_Compents[0] = 88.36; // 甲烷(CH4)
flowParams.dNG_Compents[1] = 0.68; // 氮气(N2)
flowParams.dNG_Compents[2] = 1.57; // 二氧化碳(CO2)
flowParams.dNG_Compents[3] =6.25; // 乙烷(C2H6)
flowParams.dNG_Compents[4] = 2.4; // 丙烷(C3H8)
flowParams.dNG_Compents[5] = 0.00; // 水(H2O)
flowParams.dNG_Compents[6] = 0.00; // 硫化氢(H2S)
flowParams.dNG_Compents[7] = 0.0; // 氢气(H2)
flowParams.dNG_Compents[7] = 0.04; // 氢气(H2)
flowParams.dNG_Compents[8] = 0.00; // 一氧化碳(CO)
flowParams.dNG_Compents[9] = 0.00; // 氧气(O2)
flowParams.dNG_Compents[10] = 0.1037; // 异丁烷(i-C4H10)
flowParams.dNG_Compents[11] = 0.1563; // 正丁烷(n-C4H10)
flowParams.dNG_Compents[12] = 0.0321; // 异戊烷(i-C5H12)
flowParams.dNG_Compents[13] = 0.0443; // 正戊烷(n-C5H12)
flowParams.dNG_Compents[14] = 0.0393; // 己烷(C6H14)
flowParams.dNG_Compents[10] = 0.15; // 异丁烷(i-C4H10)
flowParams.dNG_Compents[11] = 0.35; // 正丁烷(n-C4H10)
flowParams.dNG_Compents[12] = 0.05; // 异戊烷(i-C5H12)
flowParams.dNG_Compents[13] = 0.1; // 正戊烷(n-C5H12)
flowParams.dNG_Compents[14] = 0.01; // 己烷(C6H14)
flowParams.dNG_Compents[15] = 0.0; // 庚烷(C7H16)
flowParams.dNG_Compents[16] = 0.0; // 辛烷(C8H18)
flowParams.dNG_Compents[17] = 0.0; // 壬烷(C9H20)
flowParams.dNG_Compents[18] = 0.0; // 癸烷(C10H22)
flowParams.dNG_Compents[19] = 0.0; // 氦气(He)
flowParams.dNG_Compents[19] = 0.04; // 氦气(He)
flowParams.dNG_Compents[20] = 0.0; // 其他组分
// 按照GB/T 21446-2008标准中典型天然气组分赋值(体积百分比)
// flowParams.dNG_Compents[0] = 90.6724; // 甲烷(CH4)
// flowParams.dNG_Compents[1] = 3.1284; // 氮气(N2)
// flowParams.dNG_Compents[2] = 0.4676; // 二氧化碳(CO2)
// flowParams.dNG_Compents[3] =4.5279; // 乙烷(C2H6)
// flowParams.dNG_Compents[4] = 0.8280; // 丙烷(C3H8)
// flowParams.dNG_Compents[5] = 0.00; // 水(H2O)
// flowParams.dNG_Compents[6] = 0.00; // 硫化氢(H2S)
// flowParams.dNG_Compents[7] = 0.0; // 氢气(H2)
// flowParams.dNG_Compents[8] = 0.00; // 一氧化碳(CO)
// flowParams.dNG_Compents[9] = 0.00; // 氧气(O2)
// flowParams.dNG_Compents[10] = 0.1037; // 异丁烷(i-C4H10)
// flowParams.dNG_Compents[11] = 0.1563; // 正丁烷(n-C4H10)
// flowParams.dNG_Compents[12] = 0.0321; // 异戊烷(i-C5H12)
// flowParams.dNG_Compents[13] = 0.0443; // 正戊烷(n-C5H12)
// flowParams.dNG_Compents[14] = 0.0393; // 己烷(C6H14)
// flowParams.dNG_Compents[15] = 0.0; // 庚烷(C7H16)
// flowParams.dNG_Compents[16] = 0.0; // 辛烷(C8H18)
// flowParams.dNG_Compents[17] = 0.0; // 壬烷(C9H20)
// flowParams.dNG_Compents[18] = 0.0; // 癸烷(C10H22)
// flowParams.dNG_Compents[19] = 0.0; // 氦气(He)
// flowParams.dNG_Compents[20] = 0.0; // 其他组分
// flowParams.dNG_Compents[0] =96.5; // 甲烷(CH4)
// flowParams.dNG_Compents[1] =0.30; // 氮气(N2)
// flowParams.dNG_Compents[2] =0.6; // 二氧化碳(CO2)

View File

@ -1,217 +0,0 @@
/**
*********************************************************************
* @file main.c
* @author liaodeyun
* @version V1.0
* @date 2025-7-6
* @brief RT-Thread 3.0 + STM32
*********************************************************************
* @attention
*
* : H750 PRO STM32
* :http://www.firebbs.cn
* :https://fire-stm32.taobao.com
*
**********************************************************************
*/
/*
*************************************************************************
*
*************************************************************************
*/
#include "board.h"
#include "rtthread.h"
#include <stdio.h>
#include "NGCal.h"
#include "Therm.h"
#include "Detail.h"
#include "FlowCal.h"
/*
*************************************************************************
*
*************************************************************************
*/
/* 定义线程控制块 */
static rt_thread_t OFlowCal_thread = RT_NULL;
static rt_thread_t key_thread = RT_NULL;
/*
*************************************************************************
*
*************************************************************************
*/
static void OFlowCal_thread_entry(void* parameter);
static void key_thread_entry(void* parameter);
/*
*************************************************************************
* main
*************************************************************************
*/
/**
* @brief
* @param
* @retval
*/
int main(void)
{
/*
* RTT系统初始化已经在main函数之前完成
* component.c文件中的rtthread_startup()
* main函数中线线
*/
rt_kprintf("这是一个[野火]-STM32H750天然气流量计算机实验程序\n\n");
rt_kprintf("按下K1挂起线程按下K2恢复线程\n");
OFlowCal_thread = /* 线程控制块指针 */
rt_thread_create( "OFlowCal", /* 线程名字 */
OFlowCal_thread_entry, /* 线程入口函数 */
RT_NULL, /* 线程入口函数参数 */
512, /* 线程栈大小 */
3, /* 线程的优先级 */
20); /* 线程时间片 */
/* 启动线程,开启调度 */
if (OFlowCal_thread != RT_NULL)
rt_thread_startup(OFlowCal_thread);
else
return -1;
key_thread = /* 线程控制块指针 */
rt_thread_create( "key", /* 线程名字 */
key_thread_entry, /* 线程入口函数 */
RT_NULL, /* 线程入口函数参数 */
512, /* 线程栈大小 */
2, /* 线程的优先级 */
20); /* 线程时间片 */
/* 启动线程,开启调度 */
if (key_thread != RT_NULL)
rt_thread_startup(key_thread);
else
return -1;
}
/*
*************************************************************************
* 线
*************************************************************************
*/
static void OFlowCal_thread_entry(void* parameter)
{
while (1)
{
// 初始化结构体
FlowParSTRUCT flowParams = {0};
NGParSTRUCT ngParams = {0};
// 设置基本参数
flowParams.dPatm = 0.0981; // 标准大气压(bar)
flowParams.dPf = 1.48; // 压力(MPa)
flowParams.dPfType = 0; // 0=表压1=绝压
flowParams.dDp = 12.50; // 差压(kPa)
flowParams.dTf = 15.0; // 温度(°C)
flowParams.dCbtj = 0; // 参比条件类型(0=标准状态)
// 设置管道参数
flowParams.dPipeD = 259.38; // 管道内径(mm)
flowParams.dOrificeD = 150.25; // 孔板孔径(mm)
flowParams.dPipeType = 0; // 管道类型
flowParams.dPtmode = 0; // 取压方式(0=法兰取压1=角接取压)
// 设置材料参数
flowParams.dPipeMaterial = 2; // 20号钢
flowParams.dOrificeMaterial = 10; // 镍铬合金
// 设置天然气组分(示例: 95%甲烷5%其他)
// 初始化天然气组分数组(GB/T 21446-2008 典型示例组成)
for(int i=0; i<NUMBEROFCOMPONENTS; i++) {
flowParams.dNG_Compents[i] = 0.0; // 先全部初始化为0
}
// 按照GB/T 21446-2008标准中典型天然气组分赋值(体积百分比)
flowParams.dNG_Compents[0] = 88.36; // 甲烷(CH4)
flowParams.dNG_Compents[1] = 0.68; // 氮气(N2)
flowParams.dNG_Compents[2] = 1.57; // 二氧化碳(CO2)
flowParams.dNG_Compents[3] = 6.25; // 乙烷(C2H6)
flowParams.dNG_Compents[4] = 2.4; // 丙烷(C3H8)
flowParams.dNG_Compents[5] = 0.00; // 水(H2O)
flowParams.dNG_Compents[6] = 0.00; // 硫化氢(H2S)
flowParams.dNG_Compents[7] = 0.04; // 氢气(H2)
flowParams.dNG_Compents[8] = 0.00; // 一氧化碳(CO)
flowParams.dNG_Compents[9] = 0.00; // 氧气(O2)
flowParams.dNG_Compents[10] = 0.15; // 异丁烷(i-C4H10)
flowParams.dNG_Compents[11] = 0.35; // 正丁烷(n-C4H10)
flowParams.dNG_Compents[12] = 0.05; // 异戊烷(i-C5H12)
flowParams.dNG_Compents[13] = 0.1; // 正戊烷(n-C5H12)
flowParams.dNG_Compents[14] = 0.01; // 己烷(C6H14)
flowParams.dNG_Compents[15] = 0.0; // 庚烷(C7H16)
flowParams.dNG_Compents[16] = 0.0; // 辛烷(C8H18)
flowParams.dNG_Compents[17] = 0.0; // 壬烷(C9H20)
flowParams.dNG_Compents[18] = 0.0; // 癸烷(C10H22)
flowParams.dNG_Compents[19] = 0.04; // 氦气(He)
flowParams.dNG_Compents[20] = 0.0; // 其他组分
// 调用流量计算函数
OFlowCal(&flowParams, &ngParams);
// 打印计算结果
printf("========== 流量计算结果 ==========\n");
printf("工况流量: %.4f m3/s\n", flowParams.dVFlowf);
printf("标况流量: %.4f m3/s\n", flowParams.dVFlowb);
printf("标况质量流量: %.4f kg/s\n", flowParams.dMFlowb);
printf("标况能量流量: %.4f MJ/s\n", flowParams.dEFlowb / 1e6);
printf("管道内流速: %.2f m/s\n", flowParams.dVelocityFlow);
printf("流出系数: %.4f\n", flowParams.dCd);
printf("雷诺数: %.2f\n", flowParams.dRnPipe);
}
}
static void key_thread_entry(void* parameter)
{
rt_err_t uwRet = RT_EOK;
while (1)
{
if( Key_Scan(KEY1_GPIO_PORT,KEY1_PIN) == KEY_ON )/* K1 被按下 */
{
printf("挂起LED1线程\n");
uwRet = rt_thread_suspend(OFlowCal_thread);/* 挂起LED1线程 */
if(RT_EOK == uwRet)
{
rt_kprintf("挂起LED1线程成功\n");
}
else
{
rt_kprintf("挂起LED1线程失败失败代码0x%lx\n",uwRet);
}
}
if( Key_Scan(KEY2_GPIO_PORT,KEY2_PIN) == KEY_ON )/* K1 被按下 */
{
printf("恢复LED1线程\n");
uwRet = rt_thread_resume(OFlowCal_thread);/* 恢复LED1线程 */
if(RT_EOK == uwRet)
{
rt_kprintf("恢复LED1线程成功\n");
}
else
{
rt_kprintf("恢复LED1线程失败失败代码0x%lx\n",uwRet);
}
}
rt_thread_delay(20);
}
}
/********************************END OF FILE****************************/