Compare commits
3 Commits
078f382dcc
...
6ee4233c2f
Author | SHA1 | Date |
---|---|---|
true | 6ee4233c2f | |
true | 5829bc190d | |
true | 5f18010bcd |
|
@ -0,0 +1,141 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
||||
<cconfiguration id="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.release.1008047074">
|
||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.release.1008047074" moduleId="org.eclipse.cdt.core.settings" name="build_dbg">
|
||||
<externalSettings/>
|
||||
<extensions>
|
||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
||||
</extensions>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<configuration artifactName="${ProjName}" 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.release" cleanCommand="${cross_rm} -rf" description="" id="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.release.1008047074" name="build_dbg" parent="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.release">
|
||||
<folderInfo id="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.release.1008047074." name="/" resourcePath="">
|
||||
<toolChain id="ilg.gnumcueclipse.managedbuild.cross.riscv.toolchain.elf.release.231146001" name="RISC-V Cross GCC" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.toolchain.elf.release">
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.createflash.1311852988" name="Create flash image" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.createflash" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.createlisting.1983282875" name="Create extended listing" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.createlisting" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.printsize.1000761142" name="Print size" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.addtools.printsize" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.level.514997414" name="Optimization Level" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.level" useByScannerDiscovery="true" value="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.level.size" valueType="enumerated"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.messagelength.1008570639" name="Message length (-fmessage-length=0)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.messagelength" useByScannerDiscovery="true" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.signedchar.467272439" name="'char' is signed (-fsigned-char)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.signedchar" useByScannerDiscovery="true" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.functionsections.2047756949" name="Function sections (-ffunction-sections)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.functionsections" useByScannerDiscovery="true" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.datasections.207613650" name="Data sections (-fdata-sections)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.datasections" useByScannerDiscovery="true" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.debugging.level.1204865254" name="Debug level" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.debugging.level" useByScannerDiscovery="true"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.debugging.format.867779652" name="Debug format" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.debugging.format" useByScannerDiscovery="true"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.isa.base.1900297968" name="Architecture" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.isa.base" useByScannerDiscovery="false" value="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.arch.rv32i" valueType="enumerated"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.abi.integer.387605487" name="Integer ABI" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.abi.integer" useByScannerDiscovery="false" value="ilg.gnumcueclipse.managedbuild.cross.riscv.option.abi.integer.ilp32" valueType="enumerated"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.isa.multiply.1509705449" name="Multiply extension (RVM)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.isa.multiply" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.isa.compressed.1038505275" name="Compressed extension (RVC)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.isa.compressed" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.toolchain.name.1218760634" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.toolchain.name" useByScannerDiscovery="false" value="GNU MCU RISC-V GCC" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.prefix.103341323" name="Prefix" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.prefix" useByScannerDiscovery="false" value="riscv-none-embed-" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.c.487601824" name="C compiler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.c" useByScannerDiscovery="false" value="gcc" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.cpp.1062130429" name="C++ compiler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.cpp" useByScannerDiscovery="false" value="g++" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.ar.1194282993" name="Archiver" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.ar" useByScannerDiscovery="false" value="ar" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.objcopy.1529355265" name="Hex/Bin converter" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.objcopy" useByScannerDiscovery="false" value="objcopy" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.objdump.1053750745" name="Listing generator" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.objdump" useByScannerDiscovery="false" value="objdump" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.size.1441326233" name="Size command" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.size" useByScannerDiscovery="false" value="size" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.make.550105535" name="Build command" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.make" useByScannerDiscovery="false" value="make" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.rm.719280496" name="Remove command" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.command.rm" useByScannerDiscovery="false" value="rm" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.toolchain.id.226017994" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.toolchain.id" useByScannerDiscovery="false" value="512258282" valueType="string"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.isa.atomic.1590833110" name="Atomic extension (RVA)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.isa.atomic" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.warnings.unused.1961191588" name="Warn on various unused elements (-Wunused)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.warnings.unused" useByScannerDiscovery="true" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.warnings.uninitialized.929829166" name="Warn on uninitialized variables (-Wuninitialized)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.warnings.uninitialized" useByScannerDiscovery="true" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.nocommon.438890136" name="No common unitialized (-fno-common)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.optimization.nocommon" useByScannerDiscovery="true" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.isa.xw.1540402642" name="Extra Compressed extension (RVXW)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.isa.xw" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.saverestore.813643495" name="Small prologue/epilogue (-msave-restore)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.saverestore" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.rvGcc.536610708" name="RISC-V Compiler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.target.rvGcc" value="ilg.gnumcueclipse.managedbuild.cross.riscv.option.base.target.rvGcc.8" valueType="enumerated"/>
|
||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="ilg.gnumcueclipse.managedbuild.cross.riscv.targetPlatform.1944008784" isAbstract="false" osList="all" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.targetPlatform"/>
|
||||
<builder buildPath="${workspace_loc:/${ProjName}}/obj" id="ilg.gnumcueclipse.managedbuild.cross.riscv.builder.1421508906" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.builder"/>
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.1244756189" name="GNU RISC-V Cross Assembler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler">
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.usepreprocessor.1692176068" name="Use preprocessor" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.usepreprocessor" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.include.paths.1034038285" name="Include paths (-I)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.assembler.include.paths" useByScannerDiscovery="true" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/startup}""/>
|
||||
</option>
|
||||
<inputType id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.input.126366858" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.input"/>
|
||||
</tool>
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler.1731377187" name="GNU RISC-V Cross C Compiler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler">
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.include.paths.1567947810" name="Include paths (-I)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.include.paths" useByScannerDiscovery="true" valueType="includePath">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/debug}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/core}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/user}""/>
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/periph/inc}""/>
|
||||
</option>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.std.2020844713" name="Language standard" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.std" useByScannerDiscovery="true" value="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.std.gnu99" valueType="enumerated"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.defs.177116515" name="Defined symbols (-D)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.compiler.defs" useByScannerDiscovery="true" valueType="definedSymbols"/>
|
||||
<inputType id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler.input.2036806839" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler.input"/>
|
||||
</tool>
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.cpp.compiler.1610882921" name="GNU RISC-V Cross C++ Compiler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.cpp.compiler"/>
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.linker.1620074387" name="GNU RISC-V Cross C Linker" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.linker">
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.gcsections.194760422" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.gcsections" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.paths.2057340378" name="Library search path (-L)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.paths" useByScannerDiscovery="false" valueType="libPaths"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.scriptfile.1390103472" name="Script files (-T)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.scriptfile" useByScannerDiscovery="false" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/ld/ch32v203x8.ld}""/>
|
||||
</option>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.nostart.913830613" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.nostart" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.usenewlibnano.239404511" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.usenewlibnano" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.usenewlibnosys.351964161" name="Do not use syscalls (--specs=nosys.specs)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.usenewlibnosys" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.otherobjs.16994550" name="Other objects" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.otherobjs" useByScannerDiscovery="false" valueType="userObjs"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.flags.1125808200" name="Linker flags (-Xlinker [option])" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.c.linker.flags" useByScannerDiscovery="false" valueType="stringList"/>
|
||||
<inputType id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.linker.input.1859223768" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.linker.input">
|
||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
||||
</inputType>
|
||||
</tool>
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.cpp.linker.1947503520" name="GNU RISC-V Cross C++ Linker" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.cpp.linker">
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.cpp.linker.gcsections.1689063433" name="Remove unused sections (-Xlinker --gc-sections)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.cpp.linker.gcsections" value="true" valueType="boolean"/>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.cpp.linker.paths.1029177148" name="Library search path (-L)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.cpp.linker.paths" valueType="libPaths">
|
||||
<listOptionValue builtIn="false" value=""../LD""/>
|
||||
</option>
|
||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.cpp.linker.scriptfile.1751226764" name="Script files (-T)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.cpp.linker.scriptfile" valueType="stringList">
|
||||
<listOptionValue builtIn="false" value="Link.ld"/>
|
||||
</option>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.cpp.linker.nostart.642896175" name="Do not use standard start files (-nostartfiles)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.cpp.linker.nostart" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.cpp.linker.usenewlibnano.1540675679" name="Use newlib-nano (--specs=nano.specs)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.cpp.linker.usenewlibnano" value="true" valueType="boolean"/>
|
||||
</tool>
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.archiver.1292785366" name="GNU RISC-V Cross Archiver" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.archiver"/>
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.createflash.1801165667" name="GNU RISC-V Cross Create Flash Image" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.createflash"/>
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.createlisting.1356766765" name="GNU RISC-V Cross Create Listing" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.createlisting">
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.source.2052761852" name="Display source (--source|-S)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.source" useByScannerDiscovery="false" value="false" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.allheaders.439659821" name="Display all headers (--all-headers|-x)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.allheaders" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.demangle.67111865" name="Demangle names (--demangle|-C)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.demangle" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.linenumbers.1549373929" name="Display line numbers (--line-numbers|-l)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.linenumbers" useByScannerDiscovery="false" value="false" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.wide.1298918921" name="Wide lines (--wide|-w)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.wide" useByScannerDiscovery="false" value="false" valueType="boolean"/>
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.disassemble.1859590835" name="Disassemble (--disassemble|-d)" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.createlisting.disassemble" useByScannerDiscovery="false" value="true" valueType="boolean"/>
|
||||
</tool>
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.printsize.712424314" name="GNU RISC-V Cross Print Size" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.printsize">
|
||||
<option id="ilg.gnumcueclipse.managedbuild.cross.riscv.option.printsize.format.1404031980" name="Size format" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.option.printsize.format" useByScannerDiscovery="false"/>
|
||||
</tool>
|
||||
</toolChain>
|
||||
</folderInfo>
|
||||
<fileInfo id="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.release.1008047074.532442047" name="startup_ch32v20x_D8.S" rcbsApplicability="disable" resourcePath="startup/startup_ch32v20x_D8.S" toolsToInvoke="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.1244756189.389477860">
|
||||
<tool id="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.1244756189.389477860" name="GNU RISC-V Cross Assembler" superClass="ilg.gnumcueclipse.managedbuild.cross.riscv.tool.assembler.1244756189"/>
|
||||
</fileInfo>
|
||||
<sourceEntries>
|
||||
<entry excluding="startup/startup_ch32v20x_D8.S|startup/startup_ch32v20x_D8W.S|Startup/startup_ch32v20x_D8W.S|Startup/startup_ch32v20x_D8.S" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>
|
||||
</sourceEntries>
|
||||
</configuration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
||||
<storageModule moduleId="ilg.gnumcueclipse.managedbuild.packs"/>
|
||||
</cconfiguration>
|
||||
</storageModule>
|
||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
||||
<project id="999.ilg.gnumcueclipse.managedbuild.cross.riscv.target.elf.275846018" name="Executable file" projectType="ilg.gnumcueclipse.managedbuild.cross.riscv.target.elf"/>
|
||||
</storageModule>
|
||||
<storageModule moduleId="scannerConfiguration">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
<scannerConfigBuildInfo instanceId="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.debug.767917625;ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.debug.767917625.;ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler.1375371130;ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler.input.1473381709">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
<scannerConfigBuildInfo instanceId="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.release.1008047074;ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.release.1008047074.;ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler.1731377187;ilg.gnumcueclipse.managedbuild.cross.riscv.tool.c.compiler.input.2036806839">
|
||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
||||
</scannerConfigBuildInfo>
|
||||
</storageModule>
|
||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
||||
</cproject>
|
|
@ -0,0 +1,34 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<projectDescription>
|
||||
<name>gat_stand_fw</name>
|
||||
<comment/>
|
||||
<projects/>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
||||
<triggers>clean,full,incremental,</triggers>
|
||||
<arguments/>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
||||
<triggers>full,incremental,</triggers>
|
||||
<arguments/>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1595986042669</id>
|
||||
<name/>
|
||||
<type>22</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.ui.ide.multiFilter</id>
|
||||
<arguments>1.0-name-matches-false-false-*.wvproj</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
|
@ -0,0 +1,14 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<project>
|
||||
<configuration id="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.release.1008047074" name="build_dbg">
|
||||
<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="-57970907608534028" id="ilg.gnumcueclipse.managedbuild.cross.riscv.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT RISC-V Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD "${INPUTS}"" prefer-non-shared="true">
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||
</provider>
|
||||
</extension>
|
||||
</configuration>
|
||||
</project>
|
|
@ -0,0 +1,18 @@
|
|||
Vendor=WCH
|
||||
Toolchain=RISC-V
|
||||
Series=CH32V203
|
||||
RTOS=NoneOS
|
||||
MCU=CH32V203C8T6
|
||||
Link=WCH-Link
|
||||
PeripheralVersion==2.1
|
||||
Description==Website: http://www.wch.cn/products/CH32V203.html?\nROM(byte): 64K, SRAM(byte): 20K, CHIP PINS: 48, GPIO PORTS: 37.\nWCH CH32V2 series of mainstream MCUs covers the needs of a large variety of applications in the industrial,medical and consumer markets. High performance with first-class peripherals and low-power,low-voltage operation is paired with a high level of integration at accessible prices with a simple architecture and easy-to-use tools.
|
||||
Mcu Type=CH32V20x
|
||||
Address=0x08000000
|
||||
Target Path=build_dbg\gat_stand_fw.hex
|
||||
CLKSpeed=2
|
||||
DebugInterfaceMode=-1
|
||||
Erase All=true
|
||||
Program=true
|
||||
Verify=true
|
||||
Reset=true
|
||||
SDIPrintf=false
|
|
@ -1,61 +1,62 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<launchConfiguration type="com.mounriver.debug.gdbjtag.openocd.launchConfigurationType">
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doContinue" value="true" />
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doDebugInRam" value="false" />
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doFirstReset" value="true" />
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doGdbServerAllocateConsole" value="true" />
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doGdbServerAllocateTelnetConsole" value="false" />
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doSecondReset" value="true" />
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doStartGdbCLient" value="true" />
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doStartGdbServer" value="true" />
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.enableSemihosting" value="false" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.firstResetType" value="init" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbClientOtherCommands" value="set mem inaccessible-by-default off
set architecture riscv:rv32
set remotetimeout unlimited" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbClientOtherOptions" value="" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerConnectionAddress" value="" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerExecutable" value="${eclipse_home}toolchain/OpenOCD/bin/${openocd_executable}" />
|
||||
<intAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerGdbPortNumber" value="3333" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerLog" value="" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerOther" value="-f "${eclipse_home}toolchain/OpenOCD/bin/wch-riscv.cfg"" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerTclPortNumber" value="6666" />
|
||||
<intAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerTelnetPortNumber" value="4444" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.otherInitCommands" value="" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.otherRunCommands" value="" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.secondResetType" value="halt" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.svdPath" value="${eclipse_home}template/wizard/WCH/RISC-V/CH32V203/NoneOS/CH32V203xx.svd" />
|
||||
<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.ipAddress" value="localhost" />
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU OpenOCD" />
|
||||
<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="3333" />
|
||||
<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="handle_reset" />
|
||||
<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="${eclipse_home}toolchain/RISC-V Embedded GCC/bin/riscv-none-embed-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="2" />
|
||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value="" />
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="obj\gat_stand_fw.elf" />
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="gat_stand_fw" />
|
||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true" />
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="" />
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/gat_stand_fw" />
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="4" />
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<memoryBlockExpressionList context="Context string"/>
" />
|
||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory" />
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.PERIPHERALS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <peripherals> <peripheral name="TIM2"/> </peripherals> "/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doContinue" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doDebugInRam" value="false"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doFirstReset" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doGdbServerAllocateConsole" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doGdbServerAllocateTelnetConsole" value="false"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doSecondReset" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doStartGdbCLient" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.doStartGdbServer" value="true"/>
|
||||
<booleanAttribute key="com.mounriver.debug.gdbjtag.openocd.enableSemihosting" value="false"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.firstResetType" value="init"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbClientOtherCommands" value="set mem inaccessible-by-default off set architecture riscv:rv32 set remotetimeout unlimited set disassembler-options xw"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbClientOtherOptions" value=""/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerConnectionAddress" value=""/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerExecutable" value="${eclipse_home}toolchain/OpenOCD/bin/${openocd_executable}"/>
|
||||
<intAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerGdbPortNumber" value="3333"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerLog" value=""/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerOther" value="-f "${eclipse_home}toolchain/OpenOCD/bin/wch-riscv.cfg" -c "adapter_khz 1000" -c noload"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerTclPortNumber" value="6666"/>
|
||||
<intAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerTelnetPortNumber" value="4444"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.otherInitCommands" value=""/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.otherRunCommands" value=""/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.secondResetType" value="halt"/>
|
||||
<stringAttribute key="com.mounriver.debug.gdbjtag.svdPath" value="${eclipse_home}template/wizard/WCH/RISC-V/CH32V203/NoneOS/CH32V203xx.svd"/>
|
||||
<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.ipAddress" value="localhost"/>
|
||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU OpenOCD"/>
|
||||
<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="3333"/>
|
||||
<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="handle_reset"/>
|
||||
<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="${eclipse_home}toolchain/RISC-V Embedded GCC/bin/riscv-none-embed-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="2"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="build_dbg\gat_stand_fw.elf"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="gat_stand_fw"/>
|
||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
|
||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.release.1008047074"/>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
||||
<listEntry value="/gat_stand_fw"/>
|
||||
</listAttribute>
|
||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
||||
<listEntry value="4"/>
|
||||
</listAttribute>
|
||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <memoryBlockExpressionList context="Context string"/> "/>
|
||||
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
|
||||
</launchConfiguration>
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
|
||||
#include <ch32v20x.h>
|
||||
|
||||
#include "src/adc.h"
|
||||
#include "src/btn.h"
|
||||
#include "src/gat_gpio.h"
|
||||
#include "src/port_pwr.h"
|
||||
|
@ -22,19 +23,27 @@
|
|||
|
||||
void btn_top_push_cb(uint8_t idx)
|
||||
{
|
||||
// jumper 3, if set, will manage power by brightness automatically
|
||||
// only respect the button if this switch isn't set
|
||||
if (!(btn[DIP3]._mask & BTN_PUSH)) {
|
||||
gat_toggle();
|
||||
}
|
||||
}
|
||||
|
||||
void btn_bot_push_cb(uint8_t idx)
|
||||
{
|
||||
// jumper 3, if set, will manage power by brightness automatically
|
||||
// only respect the button if this switch isn't set
|
||||
if (!(btn[DIP3]._mask & BTN_PUSH)) {
|
||||
usb2_toggle();
|
||||
}
|
||||
}
|
||||
|
||||
static inline void systick_init(void)
|
||||
{
|
||||
SysTick->CMP = (SystemCoreClock / 256 / 8) - 1; // we want a 256Hz interrupt
|
||||
SysTick->CMP = (SystemCoreClock / 256) - 1; // we want a 256Hz interrupt
|
||||
SysTick->CNT = 0; // clear counter
|
||||
SysTick->CTLR = 0xB; // start counter in /8 mode, enable interrupts, auto-reset counter
|
||||
SysTick->CTLR = 0xF; // start counter in /1 mode, enable interrupts, auto-reset counter
|
||||
SysTick->SR = 0; // clear count comparison flag
|
||||
|
||||
NVIC_EnableIRQ(SysTicK_IRQn); // enable interrupt
|
||||
|
@ -65,33 +74,45 @@ static void gpio_init()
|
|||
|
||||
// RGBLED (PA0, PA1, PA2)
|
||||
RGBLED_PORT->BSHR = RGBLED_PIN_R | RGBLED_PIN_G | RGBLED_PIN_B;
|
||||
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
gpio.GPIO_Mode = GPIO_Mode_AF_PP;
|
||||
gpio.GPIO_Pin = RGBLED_PIN_R | RGBLED_PIN_G | RGBLED_PIN_B;
|
||||
GPIO_Init(RGBLED_PORT, &gpio);
|
||||
|
||||
// GAT power enable (PA3)
|
||||
GAT_EN_PORT->BCR = GAT_EN_PIN;
|
||||
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
gpio.GPIO_Pin = GAT_EN_PIN;
|
||||
GPIO_Init(GAT_EN_PORT, &gpio);
|
||||
|
||||
// lightsense anode (PA5)
|
||||
LSENS_A_PORT->BCR = LSENS_A_PIN;
|
||||
gpio.GPIO_Pin = LSENS_A_PIN;
|
||||
GPIO_Init(LSENS_A_PORT, &gpio);
|
||||
|
||||
// lightsense cathode (PB0)
|
||||
LSENS_K_PORT->BCR = LSENS_K_PIN;
|
||||
gpio.GPIO_Pin = LSENS_K_PIN;
|
||||
GPIO_Init(LSENS_K_PORT, &gpio);
|
||||
|
||||
// USB2 power enable (PB4)
|
||||
USB2_EN_PORT->BCR = USB2_EN_PIN;
|
||||
gpio.GPIO_Pin = USB2_EN_PIN;
|
||||
GPIO_Init(USB2_EN_PORT, &gpio);
|
||||
|
||||
// GAT overcurrent detect (PA4)
|
||||
gpio.GPIO_Mode = GPIO_Mode_IPU;
|
||||
gpio.GPIO_Pin = GAT_OC_PIN;
|
||||
GPIO_Init(GAT_EN_PORT, &gpio);
|
||||
|
||||
|
||||
// buttons (PB10, PB11) and DIP switches (PB12, PB13, PB14)
|
||||
gpio.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14;
|
||||
GPIO_Init(GPIOB, &gpio);
|
||||
|
||||
// GAT GPIO will be configured later
|
||||
// GAT GPIO is configured in gat_gpio.c
|
||||
|
||||
// USB PA11, PA12 will be configured later
|
||||
|
||||
// USB2 power enable (PB4)
|
||||
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
gpio.GPIO_Pin = USB2_EN_PIN;
|
||||
GPIO_Init(USB2_EN_PORT, &gpio);
|
||||
|
||||
// unused pins that are used for I2C passthrough
|
||||
gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
||||
gpio.GPIO_Pin = GPIO_Pin_15;
|
||||
|
@ -117,7 +138,7 @@ int main(void)
|
|||
|
||||
// enable peripheral clocks
|
||||
RCC_APB1PeriphClockCmd( RCC_APB1Periph_PWR | RCC_APB1Periph_BKP |
|
||||
RCC_APB1Periph_I2C1, ENABLE);
|
||||
RCC_APB1Periph_I2C1 | RCC_APB1Periph_TIM2, ENABLE);
|
||||
RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA |
|
||||
RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD |
|
||||
RCC_APB2Periph_ADC1, ENABLE);
|
||||
|
@ -145,6 +166,9 @@ int main(void)
|
|||
// start up rgbled
|
||||
rgbled_init();
|
||||
|
||||
// initialize light sense stuff
|
||||
adc_init();
|
||||
|
||||
// finally, get the system tick interrupt going
|
||||
systick_init();
|
||||
|
||||
|
@ -158,14 +182,40 @@ int main(void)
|
|||
uint8_t st_tick;
|
||||
volatile uint32_t uptime;
|
||||
|
||||
__attribute__((interrupt("WCH-Interrupt-fast")))
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
st_tick++;
|
||||
if (!st_tick) uptime++;
|
||||
if (!st_tick) {
|
||||
uptime++;
|
||||
|
||||
// jumper 3, if set, will manage power by brightness automatically
|
||||
if (btn[DIP3]._mask & BTN_PUSH) {
|
||||
if (adc_get_lsens_coarse() > LSENS_DARK) {
|
||||
gat_off();
|
||||
usb2_off();
|
||||
}
|
||||
if (adc_get_lsens_coarse() <= LSENS_BRIGHT) {
|
||||
gat_on();
|
||||
usb2_on();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// light sensor updating at ~4ms
|
||||
adc_process_lsens();
|
||||
|
||||
// update buttons
|
||||
btn_poll();
|
||||
|
||||
if (!(st_tick & 0x3)) {
|
||||
rgbled_update();
|
||||
}
|
||||
|
||||
// clear comparison flag
|
||||
SysTick->SR = 0;
|
||||
|
||||
if (SysTick->SR) {
|
||||
while (1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,183 @@
|
|||
/*
|
||||
* lightsense.c
|
||||
*
|
||||
* Created on: Oct 18, 2024
|
||||
* Author: true
|
||||
*/
|
||||
|
||||
|
||||
#include <ch32v20x.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "adc.h"
|
||||
|
||||
|
||||
|
||||
static GPIO_InitTypeDef lsens_gpio = {
|
||||
.GPIO_Mode = GPIO_Mode_Out_PP,
|
||||
.GPIO_Pin = LSENS_A_PIN,
|
||||
.GPIO_Speed = GPIO_Speed_2MHz
|
||||
};
|
||||
|
||||
uint16_t lsens_val;
|
||||
|
||||
static uint8_t lsens_mode = LSENS_READING_IDLE;
|
||||
|
||||
uint8_t lsens_wait;
|
||||
uint8_t lsens_coarse = 1;
|
||||
|
||||
uint16_t lsens_timeout;
|
||||
|
||||
|
||||
|
||||
void adc_init()
|
||||
{
|
||||
ADC_InitTypeDef adc = {0};
|
||||
|
||||
RCC_ADCCLKConfig(RCC_PCLK2_Div4);
|
||||
|
||||
ADC_DeInit(ADC1);
|
||||
adc.ADC_Mode = ADC_Mode_Independent;
|
||||
adc.ADC_ScanConvMode = DISABLE;
|
||||
adc.ADC_ContinuousConvMode = DISABLE;
|
||||
adc.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
|
||||
adc.ADC_DataAlign = ADC_DataAlign_Right;
|
||||
adc.ADC_NbrOfChannel = 1;
|
||||
ADC_Init(ADC1, &adc);
|
||||
|
||||
ADC_RegularChannelConfig(ADC1, LSENS_ADC_CH, 1, ADC_SampleTime_239Cycles5);
|
||||
ADC_Cmd(ADC1, ENABLE);
|
||||
}
|
||||
|
||||
void adc_convert()
|
||||
{
|
||||
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
|
||||
}
|
||||
|
||||
void adc_read()
|
||||
{
|
||||
uint16_t timeout = 0xfff;
|
||||
while((!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)) && timeout) timeout--;
|
||||
if (timeout) {
|
||||
lsens_val = ADC_GetConversionValue(ADC1);
|
||||
}
|
||||
}
|
||||
|
||||
void adc_set_mode_lsens(uint8_t mode)
|
||||
{
|
||||
lsens_mode = mode;
|
||||
|
||||
if (mode == LSENS_OUTPUT) {
|
||||
lsens_gpio.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
lsens_gpio.GPIO_Pin = LSENS_A_PIN;
|
||||
GPIO_Init(LSENS_A_PORT, &lsens_gpio);
|
||||
lsens_gpio.GPIO_Pin = LSENS_K_PIN;
|
||||
GPIO_Init(LSENS_K_PORT, &lsens_gpio);
|
||||
}
|
||||
}
|
||||
|
||||
uint8_t adc_get_mode_lsens()
|
||||
{
|
||||
return lsens_mode;
|
||||
}
|
||||
|
||||
static void lsens_start()
|
||||
{
|
||||
// set anode and cathode low
|
||||
LSENS_A_PORT->BCR = LSENS_A_PIN;
|
||||
LSENS_K_PORT->BCR = LSENS_K_PIN;
|
||||
|
||||
adc_set_mode_lsens(LSENS_READING_START);
|
||||
|
||||
// set cathode high, let it charge
|
||||
LSENS_K_PORT->BSHR = LSENS_K_PIN;
|
||||
|
||||
// set anode low
|
||||
lsens_gpio.GPIO_Pin = LSENS_A_PIN;
|
||||
lsens_gpio.GPIO_Mode = GPIO_Mode_IPD;
|
||||
GPIO_Init(LSENS_A_PORT, &lsens_gpio);
|
||||
|
||||
// set cathode as analog input
|
||||
lsens_gpio.GPIO_Pin = LSENS_K_PIN;
|
||||
lsens_gpio.GPIO_Mode = GPIO_Mode_AIN;
|
||||
GPIO_Init(LSENS_K_PORT, &lsens_gpio);
|
||||
}
|
||||
|
||||
static void lsens_stop()
|
||||
{
|
||||
lsens_gpio.GPIO_Mode = GPIO_Mode_Out_PP;
|
||||
lsens_gpio.GPIO_Pin = LSENS_A_PIN;
|
||||
GPIO_Init(LSENS_A_PORT, &lsens_gpio);
|
||||
lsens_gpio.GPIO_Pin = LSENS_K_PIN;
|
||||
GPIO_Init(LSENS_K_PORT, &lsens_gpio);
|
||||
|
||||
lsens_mode = LSENS_READING_IDLE;
|
||||
}
|
||||
|
||||
void adc_process_lsens()
|
||||
{
|
||||
if (lsens_mode != LSENS_OUTPUT) {
|
||||
// do what needs to be done by me to defeat the light enemys
|
||||
switch (lsens_mode) {
|
||||
case LSENS_READING_IDLE: {
|
||||
// prepare LED, wait a little bit
|
||||
lsens_start();
|
||||
adc_convert();
|
||||
lsens_wait = lsens_coarse;
|
||||
|
||||
lsens_mode = LSENS_READING_START;
|
||||
|
||||
break;
|
||||
}
|
||||
case LSENS_READING_START: {
|
||||
if (!lsens_wait) {
|
||||
// convert the LED
|
||||
adc_convert();
|
||||
|
||||
lsens_mode = LSENS_READING_WAIT;
|
||||
}
|
||||
|
||||
lsens_wait--;
|
||||
|
||||
break;
|
||||
}
|
||||
case LSENS_READING_WAIT: {
|
||||
// read the light sensor value
|
||||
adc_read();
|
||||
lsens_stop();
|
||||
|
||||
// calculate adjustments
|
||||
if (lsens_val > LSENS_COARSE_UP) {
|
||||
lsens_coarse++;
|
||||
if (lsens_coarse > 0x3f) lsens_coarse = 0x3f;
|
||||
} else if (lsens_val < LSENS_COARSE_DOWN) {
|
||||
if (lsens_coarse) lsens_coarse--;
|
||||
}
|
||||
|
||||
lsens_wait = 255 - lsens_coarse;
|
||||
|
||||
// wait a bit before doing it again
|
||||
lsens_mode = LSENS_READING_TIMEOUT;
|
||||
|
||||
break;
|
||||
}
|
||||
case LSENS_READING_TIMEOUT: {
|
||||
if (!lsens_wait) {
|
||||
// do it all again
|
||||
lsens_mode = LSENS_READING_IDLE;
|
||||
}
|
||||
lsens_wait--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
uint16_t adc_get_lsens()
|
||||
{
|
||||
return lsens_val;
|
||||
}
|
||||
|
||||
uint8_t adc_get_lsens_coarse()
|
||||
{
|
||||
return lsens_coarse;
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* lightsense.h
|
||||
*
|
||||
* Created on: Oct 18, 2024
|
||||
* Author: true
|
||||
*/
|
||||
|
||||
#ifndef USER_SRC_ADC_H_
|
||||
#define USER_SRC_ADC_H_
|
||||
|
||||
|
||||
|
||||
#define LSENS_DARK_THRESHOLD 0x7ff // baseline minimum value reading achieved in darkness
|
||||
|
||||
#define LSENS_A_PORT GPIOA
|
||||
#define LSENS_A_PIN GPIO_Pin_5
|
||||
#define LSENS_K_PORT GPIOB
|
||||
#define LSENS_K_PIN GPIO_Pin_0
|
||||
#define LSENS_ADC_CH ADC_Channel_8
|
||||
|
||||
#define LSENS_COARSE_UP 0x990 // counts higher than this increase lsens_coarse, maximum 64
|
||||
#define LSENS_COARSE_DOWN 0x890 // counts lower than this decrease lsens_coarse, minimum 1
|
||||
|
||||
#define LSENS_DARK 48
|
||||
#define LSENS_BRIGHT 32
|
||||
|
||||
enum lsens_mode {
|
||||
LSENS_READING_IDLE = 0,
|
||||
LSENS_READING_START,
|
||||
LSENS_READING_WAIT,
|
||||
LSENS_READING_TIMEOUT,
|
||||
LSENS_OUTPUT = 0xff
|
||||
};
|
||||
|
||||
|
||||
|
||||
void adc_init();
|
||||
|
||||
void adc_convert();
|
||||
void adc_read();
|
||||
|
||||
void adc_set_mode_lsens(uint8_t mode);
|
||||
uint8_t adc_get_mode_lsens();
|
||||
|
||||
void adc_process_lsens();
|
||||
|
||||
uint16_t adc_get_lsens();
|
||||
uint8_t adc_get_lsens_coarse();
|
||||
|
||||
|
||||
|
||||
#endif /* USER_SRC_ADC_H_ */
|
|
@ -23,12 +23,12 @@ void btn_init()
|
|||
// this function assumes GPIO has been configured already
|
||||
|
||||
// initialize default setup
|
||||
btn[0]._pintype = BTN1_PIN;
|
||||
btn[1]._pintype = BTN2_PIN;
|
||||
btn[BTN1]._pintype = BTN1_PIN;
|
||||
btn[BTN2]._pintype = BTN2_PIN;
|
||||
|
||||
btn[2]._pintype = DIP1_PIN;
|
||||
btn[3]._pintype = DIP2_PIN;
|
||||
btn[4]._pintype = DIP3_PIN;
|
||||
btn[DIP1]._pintype = DIP1_PIN;
|
||||
btn[DIP2]._pintype = DIP2_PIN;
|
||||
btn[DIP3]._pintype = DIP3_PIN;
|
||||
|
||||
for (i = 0; i < BTN_COUNT; i++) {
|
||||
btn[i]._mask = BTN_RELEASE;
|
||||
|
@ -43,19 +43,15 @@ void btn_init()
|
|||
void btn_poll()
|
||||
{
|
||||
uint8_t i;
|
||||
uint8_t r;
|
||||
uint8_t ignore;
|
||||
|
||||
uint8_t pushed;
|
||||
|
||||
for (i = 0; i < BTN_COUNT; i++) {
|
||||
pushed = 0;
|
||||
|
||||
ignore = btn[i]._mask & BTN_IGNORE;
|
||||
r = BTN_PORT->INDR & (1 << (btn[i]._pintype & BTN_PIN_MASK));
|
||||
|
||||
// active low type buttons
|
||||
if (!r) pushed = 1;
|
||||
pushed = BTN_PORT->INDR & (1 << (btn[i]._pintype & BTN_PIN_MASK)) ? 0 : 1;
|
||||
|
||||
if (pushed) {
|
||||
// hold counter
|
||||
|
|
|
@ -16,11 +16,16 @@
|
|||
|
||||
#define BTN_PORT GPIOB
|
||||
|
||||
#define BTN1 0
|
||||
#define BTN1_PIN 10
|
||||
#define BTN2 1
|
||||
#define BTN2_PIN 11
|
||||
|
||||
#define DIP1 2
|
||||
#define DIP1_PIN 12
|
||||
#define DIP2 3
|
||||
#define DIP2_PIN 13
|
||||
#define DIP3 4
|
||||
#define DIP3_PIN 14
|
||||
|
||||
#define BTN_PIN_MASK 0xf
|
||||
|
|
|
@ -17,15 +17,21 @@
|
|||
#define GAT_ON_FLAG (1 << 0)
|
||||
#define USB2_ON_FLAG (1 << 1)
|
||||
|
||||
#define INIT_FLAG (0xa0 << 8)
|
||||
#define INIT_FLAG (0xaf << 8)
|
||||
|
||||
|
||||
|
||||
static uint8_t port_pwr_state;
|
||||
static uint16_t port_pwr_state;
|
||||
static uint8_t gat_oc_state_latch = 0;
|
||||
|
||||
|
||||
|
||||
void port_pwr_state_commit_bkp()
|
||||
{
|
||||
BKP_WriteBackupRegister(PORT_PWR_STATE_DR, port_pwr_state);
|
||||
RTC_WaitForLastTask();
|
||||
}
|
||||
|
||||
void gat_on()
|
||||
{
|
||||
if (gat_oc_state_latch) return;
|
||||
|
@ -33,7 +39,7 @@ void gat_on()
|
|||
GAT_EN_PORT->BSHR = GAT_EN_PIN;
|
||||
|
||||
port_pwr_state |= GAT_ON_FLAG;
|
||||
BKP_WriteBackupRegister(PORT_PWR_STATE_DR, port_pwr_state);
|
||||
port_pwr_state_commit_bkp();
|
||||
}
|
||||
|
||||
void gat_off()
|
||||
|
@ -41,7 +47,7 @@ void gat_off()
|
|||
GAT_EN_PORT->BCR = GAT_EN_PIN;
|
||||
|
||||
port_pwr_state &= ~GAT_ON_FLAG;
|
||||
BKP_WriteBackupRegister(PORT_PWR_STATE_DR, port_pwr_state);
|
||||
port_pwr_state_commit_bkp();
|
||||
}
|
||||
|
||||
uint8_t gat_pwr_state()
|
||||
|
@ -65,16 +71,21 @@ void gat_toggle()
|
|||
else gat_on();
|
||||
}
|
||||
|
||||
|
||||
void usb2_on()
|
||||
{
|
||||
USB2_EN_PORT->BSHR = USB2_EN_PIN;
|
||||
|
||||
port_pwr_state |= USB2_ON_FLAG;
|
||||
BKP_WriteBackupRegister(PORT_PWR_STATE_DR, port_pwr_state);
|
||||
port_pwr_state_commit_bkp();
|
||||
}
|
||||
|
||||
void usb2_off()
|
||||
{
|
||||
USB2_EN_PORT->BCR = USB2_EN_PIN;
|
||||
|
||||
port_pwr_state &= ~USB2_ON_FLAG;
|
||||
BKP_WriteBackupRegister(PORT_PWR_STATE_DR, port_pwr_state);
|
||||
port_pwr_state_commit_bkp();
|
||||
}
|
||||
|
||||
uint8_t usb2_pwr_state()
|
||||
|
@ -84,20 +95,25 @@ uint8_t usb2_pwr_state()
|
|||
|
||||
void usb2_toggle()
|
||||
{
|
||||
if (usb2_pwr_state()) gat_off();
|
||||
else gat_on();
|
||||
if (usb2_pwr_state()) usb2_off();
|
||||
else usb2_on();
|
||||
}
|
||||
|
||||
|
||||
void port_pwr_init()
|
||||
{
|
||||
port_pwr_state = BKP_ReadBackupRegister(PORT_PWR_STATE_DR);
|
||||
RTC_WaitForLastTask();
|
||||
|
||||
if ((port_pwr_state & INIT_FLAG) != INIT_FLAG) {
|
||||
// no battery retention.
|
||||
// automatically turn on all outputs
|
||||
port_pwr_state |= INIT_FLAG;
|
||||
gat_on();
|
||||
usb2_on();
|
||||
port_pwr_state = INIT_FLAG | USB2_ON_FLAG | GAT_ON_FLAG;
|
||||
|
||||
// and commit state flags
|
||||
port_pwr_state_commit_bkp();
|
||||
}
|
||||
|
||||
if (port_pwr_state & GAT_ON_FLAG) gat_on();
|
||||
if (port_pwr_state & USB2_ON_FLAG) usb2_on();
|
||||
}
|
||||
|
|
|
@ -2,14 +2,21 @@
|
|||
* rgbled.c
|
||||
*
|
||||
* using TIM2 CH1-CH3
|
||||
*
|
||||
* * errata:
|
||||
* - board design makes overcurrent on GAT port practically impossible.
|
||||
* overcurrent condition may either trip low voltage condition due to
|
||||
* decoupling or voltage output limit on LDO. as such, displaying
|
||||
* any overcurrent state is meaningless.
|
||||
*/
|
||||
|
||||
#include <ch32v20x.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "btn.h"
|
||||
#include "port_pwr.h"
|
||||
#include "rtc.h"
|
||||
|
||||
#include "port_pwr.h"
|
||||
|
||||
|
||||
|
||||
|
@ -17,9 +24,10 @@
|
|||
#define GRN 1
|
||||
#define BLU 2
|
||||
|
||||
#define BRT_RED 200
|
||||
#define BRT_GRN 100
|
||||
#define BRT_BLU 200
|
||||
#define BRT_RED 40
|
||||
#define BRT_GRN 32
|
||||
#define BRT_BLU 36
|
||||
#define BRT_OFF 0
|
||||
|
||||
#define RGBLED_TIM TIM2
|
||||
|
||||
|
@ -33,7 +41,8 @@ static uint8_t state[3] = {0};
|
|||
|
||||
void rgbled_set()
|
||||
{
|
||||
uint8_t i;
|
||||
int8_t i;
|
||||
uint16_t out[3];
|
||||
|
||||
// flash counters
|
||||
for (i = 0; i < 3; i++) {
|
||||
|
@ -63,20 +72,34 @@ void rgbled_set()
|
|||
}
|
||||
}
|
||||
|
||||
RGBLED_TIM->CH1CVR = state[RED] ? BRT_RED : 0;
|
||||
RGBLED_TIM->CH2CVR = state[GRN] ? BRT_GRN : 0;
|
||||
RGBLED_TIM->CH3CVR = state[BLU] ? BRT_BLU : 0;
|
||||
out[BLU] = BRT_BLU;
|
||||
out[GRN] = BRT_GRN;
|
||||
out[RED] = BRT_RED;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
// jumper 1 will reduce brightness
|
||||
if (btn[DIP1]._mask & BTN_PUSH) {
|
||||
out[i] >>= 2;
|
||||
}
|
||||
|
||||
// jumper 2 will turn off LEDs entirely
|
||||
if (btn[DIP2]._mask & BTN_PUSH) {
|
||||
out[i] = BRT_OFF;
|
||||
}
|
||||
}
|
||||
|
||||
RGBLED_TIM->CH1CVR = state[BLU] ? out[BLU] : BRT_OFF;
|
||||
RGBLED_TIM->CH2CVR = state[GRN] ? out[GRN] : BRT_OFF;
|
||||
RGBLED_TIM->CH3CVR = state[RED] ? out[RED] : BRT_OFF;
|
||||
}
|
||||
|
||||
void rgbled_update()
|
||||
{
|
||||
uint16_t w;
|
||||
|
||||
// VCR flash if clock isn't set
|
||||
w = BKP_ReadBackupRegister(RTC_STATE_DR);
|
||||
switch (w) {
|
||||
case RTC_STATE_UNINITIALIZED: {
|
||||
flash_timeout[BLU] = 254;
|
||||
/*
|
||||
switch (rtc_state) {
|
||||
case RTC_STATE_CLOCK_NOT_SET: {
|
||||
flash_timeout[BLU] = 48;
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
|
@ -84,9 +107,16 @@ void rgbled_update()
|
|||
break;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// see errata on why we aren't showing overcurrent status anymore
|
||||
// flash_timeout[RED] = gat_oc_state() ? 16 : 0xff;
|
||||
|
||||
// power output state
|
||||
flash_timeout[GRN] = gat_pwr_state() ? 0 : 0xff;
|
||||
flash_timeout[RED] = gat_oc_state() ? 50 : 0xff;
|
||||
flash_timeout[RED] = usb2_pwr_state() ? 0 : 0xff;
|
||||
|
||||
rgbled_set();
|
||||
}
|
||||
|
||||
void rgbled_init()
|
||||
|
@ -102,18 +132,21 @@ void rgbled_init()
|
|||
|
||||
pwm.TIM_OCMode = TIM_OCMode_PWM1;
|
||||
pwm.TIM_OutputState = TIM_OutputState_Enable;
|
||||
pwm.TIM_Pulse = 0;
|
||||
pwm.TIM_OCPolarity = TIM_OCPolarity_High;
|
||||
pwm.TIM_Pulse = BRT_OFF;
|
||||
pwm.TIM_OCPolarity = TIM_OCPolarity_Low;
|
||||
|
||||
TIM_OC1PreloadConfig(RGBLED_TIM, TIM_OCPreload_Disable);
|
||||
TIM_OC2PreloadConfig(RGBLED_TIM, TIM_OCPreload_Disable);
|
||||
TIM_OC3PreloadConfig(RGBLED_TIM, TIM_OCPreload_Disable);
|
||||
TIM_ARRPreloadConfig(RGBLED_TIM, ENABLE);
|
||||
|
||||
TIM_OC1Init(RGBLED_TIM, &pwm);
|
||||
TIM_OC2Init(RGBLED_TIM, &pwm);
|
||||
TIM_OC3Init(RGBLED_TIM, &pwm);
|
||||
|
||||
TIM_CtrlPWMOutputs(RGBLED_TIM, ENABLE);
|
||||
TIM_OC1PreloadConfig(RGBLED_TIM, TIM_OCPreload_Disable);
|
||||
TIM_ARRPreloadConfig(RGBLED_TIM, ENABLE);
|
||||
|
||||
RGBLED_TIM->CNT = 0;
|
||||
TIM_Cmd(RGBLED_TIM, ENABLE);
|
||||
|
||||
RGBLED_TIM->CH1CVR = 0;
|
||||
RGBLED_TIM->CH2CVR = 0;
|
||||
RGBLED_TIM->CH3CVR = 0;
|
||||
flash_timeout[BLU] = flash_timeout[GRN] = flash_timeout[RED] = 0xff;
|
||||
}
|
||||
|
|
|
@ -11,12 +11,13 @@
|
|||
|
||||
|
||||
#define RGBLED_PORT GPIOA
|
||||
#define RGBLED_PIN_R GPIO_Pin_0
|
||||
#define RGBLED_PIN_B GPIO_Pin_0
|
||||
#define RGBLED_PIN_G GPIO_Pin_1
|
||||
#define RGBLED_PIN_B GPIO_Pin_2
|
||||
#define RGBLED_PIN_R GPIO_Pin_2
|
||||
|
||||
|
||||
|
||||
void rgbled_init();
|
||||
void rgbled_update();
|
||||
|
||||
|
||||
|
|
|
@ -116,6 +116,7 @@ int8_t rtc_init()
|
|||
// get RTC state
|
||||
// if things aren't configured it'll be initialized in a moment
|
||||
rtc_state = BKP_ReadBackupRegister(RTC_STATE_DR);
|
||||
RTC_WaitForLastTask();
|
||||
|
||||
// is RTC already configured?
|
||||
if (BKP_ReadBackupRegister(RTC_INIT_DR) != RTC_INIT_PATTERN) {
|
||||
|
@ -150,11 +151,14 @@ int8_t rtc_init()
|
|||
|
||||
rtc_state = RTC_STATE_CLOCK_NOT_SET;
|
||||
BKP_WriteBackupRegister(RTC_STATE_DR, rtc_state);
|
||||
RTC_WaitForLastTask();
|
||||
BKP_WriteBackupRegister(RTC_INIT_DR, RTC_INIT_PATTERN);
|
||||
|
||||
// RTC_NVIC_Config();
|
||||
// RTC_Get();
|
||||
}
|
||||
|
||||
RTC_WaitForLastTask();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -13,6 +13,14 @@
|
|||
|
||||
|
||||
|
||||
/* a small note about backup registers:
|
||||
*
|
||||
* the datasheet clearly states there are 42 16-bit registers.
|
||||
* it does not cut out any exception for CH32V203 except CH32V203RB.
|
||||
* however, the reference manual states that registers 11-42 are only
|
||||
* for the _D8 chips, and not the _D6 V4B chips like this one.
|
||||
* thus we only have _10_ backup registers, not 42.
|
||||
*/
|
||||
#define RTC_INIT_DR BKP_DR1
|
||||
#define RTC_STATE_DR BKP_DR2
|
||||
|
||||
|
@ -35,6 +43,10 @@ typedef struct RTClock {
|
|||
|
||||
|
||||
|
||||
extern uint8_t rtc_state;
|
||||
|
||||
|
||||
|
||||
int8_t rtc_init();
|
||||
|
||||
int8_t rtc_set_clock(struct RTClock *c);
|
||||
|
|
|
@ -26,9 +26,9 @@
|
|||
//#define SYSCLK_FREQ_120MHz_HSE 120000000
|
||||
//#define SYSCLK_FREQ_144MHz_HSE 144000000
|
||||
//#define SYSCLK_FREQ_HSI HSI_VALUE
|
||||
//#define SYSCLK_FREQ_48MHz_HSI 48000000
|
||||
#define SYSCLK_FREQ_48MHz_HSI 48000000
|
||||
//#define SYSCLK_FREQ_56MHz_HSI 56000000
|
||||
#define SYSCLK_FREQ_72MHz_HSI 72000000
|
||||
//#define SYSCLK_FREQ_72MHz_HSI 72000000
|
||||
//#define SYSCLK_FREQ_96MHz_HSI 96000000
|
||||
//#define SYSCLK_FREQ_120MHz_HSI 120000000
|
||||
//#define SYSCLK_FREQ_144MHz_HSI 144000000
|
||||
|
|
Loading…
Reference in New Issue