1
0

Merged gyro management

Added some comments
This commit is contained in:
JackCarterSmith 2019-12-07 14:14:58 +01:00
parent 60a8090bf3
commit cff45d045d
13 changed files with 382 additions and 261 deletions

View File

@ -1,258 +1,258 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings"> <storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279"> <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279" moduleId="org.eclipse.cdt.core.settings" name="Debug"> <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279" moduleId="org.eclipse.cdt.core.settings" name="Debug">
<externalSettings /> <externalSettings/>
<extensions> <extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser" /> <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.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.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.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.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser" /> <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions> </extensions>
</storageModule> </storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> <storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" 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.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;"> <configuration artifactExtension="elf" 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.debug" cleanCommand="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279" name="Debug" parent="fr.ac6.managedbuild.config.gnu.cross.exe.debug" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
<folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279." name="/" resourcePath=""> <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279." name="/" resourcePath="">
<toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.1480060909" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug"> <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.1480060909" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
<option id="fr.ac6.managedbuild.option.gnu.cross.prefix.327330765" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string" /> <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.327330765" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1292439930" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32F412ZGTx" valueType="string" /> <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1292439930" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32F412ZGTx" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.board.1989889501" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="32F412GDISCOVERY" valueType="string" /> <option id="fr.ac6.managedbuild.option.gnu.cross.board.1989889501" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="32F412GDISCOVERY" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList"> <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
<listOptionValue builtIn="false" value="ARM Cortex-M4" /> <listOptionValue builtIn="false" value="ARM Cortex-M4"/>
<listOptionValue builtIn="false" value="CM4" /> <listOptionValue builtIn="false" value="CM4"/>
</option> </option>
<option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1462895718" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated" /> <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1462895718" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1842363514" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated" /> <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1842363514" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.979114293" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated" /> <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.979114293" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.711669049" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross" /> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.711669049" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
<builder buildPath="${workspace_loc:/2P-ProjectPong}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1795211660" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross"> <builder buildPath="${workspace_loc:/2P-ProjectPong}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.1795211660" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries> <outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Debug"/>
</outputEntries> </outputEntries>
</builder> </builder>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1810252623" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1810252623" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
<option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.991062419" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.debug" valueType="enumerated" /> <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.991062419" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.debug" valueType="enumerated"/>
<option id="gnu.c.compiler.option.debugging.level.785975152" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated" /> <option id="gnu.c.compiler.option.debugging.level.785975152" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
<option id="gnu.c.compiler.option.include.paths.139148132" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <option id="gnu.c.compiler.option.include.paths.139148132" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../Inc" /> <listOptionValue builtIn="false" value="../Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc" /> <listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy" /> <listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F4xx/Include" /> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F4xx/Include"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include" /> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Utilities/Fonts}&quot;" /> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Drivers/BSP/Components}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Drivers/BSP/Components}&quot;" /> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Drivers/BSP/STM32412G-Discovery}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Drivers/BSP/STM32412G-Discovery}&quot;" /> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Utilities/Fonts}&quot;"/>
</option> </option>
<option id="gnu.c.compiler.option.preprocessor.def.symbols.1001009273" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"> <option id="gnu.c.compiler.option.preprocessor.def.symbols.1001009273" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__weak=__attribute__((weak))" /> <listOptionValue builtIn="false" value="__weak=__attribute__((weak))"/>
<listOptionValue builtIn="false" value="__packed=__attribute__((__packed__))" /> <listOptionValue builtIn="false" value="__packed=__attribute__((__packed__))"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER" /> <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="STM32F412Zx" /> <listOptionValue builtIn="false" value="STM32F412Zx"/>
</option> </option>
<option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1766545486" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string" /> <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1766545486" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1168227265" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c" /> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1168227265" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1676226394" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s" /> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1676226394" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
</tool> </tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.953536380" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.953536380" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
<option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.1745085217" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.debug" valueType="enumerated" /> <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.1745085217" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.debug" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.debugging.level.1358937795" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated" /> <option id="gnu.cpp.compiler.option.debugging.level.1358937795" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.include.paths.1851773756" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <option id="gnu.cpp.compiler.option.include.paths.1851773756" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../Inc" /> <listOptionValue builtIn="false" value="../Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc" /> <listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy" /> <listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F4xx/Include" /> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F4xx/Include"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include" /> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
</option> </option>
<option id="gnu.cpp.compiler.option.preprocessor.def.1101027785" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols"> <option id="gnu.cpp.compiler.option.preprocessor.def.1101027785" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__weak=__attribute__((weak))" /> <listOptionValue builtIn="false" value="__weak=__attribute__((weak))"/>
<listOptionValue builtIn="false" value="__packed=__attribute__((__packed__))" /> <listOptionValue builtIn="false" value="__packed=__attribute__((__packed__))"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER" /> <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="STM32F412Zx" /> <listOptionValue builtIn="false" value="STM32F412Zx"/>
</option> </option>
<option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.203056511" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string" /> <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.203056511" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.759185457" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp" /> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.759185457" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.182469992" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s" /> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.182469992" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
</tool> </tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.778712005" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.778712005" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
<option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.608352848" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../STM32F412ZGTx_FLASH.ld" valueType="string" /> <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.608352848" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../STM32F412ZGTx_FLASH.ld" valueType="string"/>
<option id="gnu.c.link.option.libs.1229088125" name="Libraries (-l)" superClass="gnu.c.link.option.libs" /> <option id="gnu.c.link.option.libs.1229088125" name="Libraries (-l)" superClass="gnu.c.link.option.libs"/>
<option id="gnu.c.link.option.paths.2017226878" name="Library search path (-L)" superClass="gnu.c.link.option.paths" /> <option id="gnu.c.link.option.paths.2017226878" name="Library search path (-L)" superClass="gnu.c.link.option.paths"/>
<option id="gnu.c.link.option.ldflags.1752926105" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" /> <option id="gnu.c.link.option.ldflags.1752926105" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
<option id="gnu.c.link.option.other.1704386579" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" /> <option id="gnu.c.link.option.other.1704386579" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.556710932" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.556710932" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)" /> <additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType> </inputType>
</tool> </tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.660094099" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.660094099" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
<option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.778521967" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../STM32F412ZGTx_FLASH.ld" valueType="string" /> <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.778521967" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../STM32F412ZGTx_FLASH.ld" valueType="string"/>
<option id="gnu.cpp.link.option.libs.825816723" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" /> <option id="gnu.cpp.link.option.libs.825816723" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
<option id="gnu.cpp.link.option.paths.573701591" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" /> <option id="gnu.cpp.link.option.paths.573701591" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
<option id="gnu.cpp.link.option.flags.1511117039" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" /> <option id="gnu.cpp.link.option.flags.1511117039" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
<option id="gnu.cpp.link.option.other.451653290" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" /> <option id="gnu.cpp.link.option.other.451653290" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1153958275" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1153958275" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)" /> <additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType> </inputType>
</tool> </tool>
<tool id="fr.ac6.managedbuild.tool.gnu.archiver.380069542" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver" /> <tool id="fr.ac6.managedbuild.tool.gnu.archiver.380069542" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.385533957" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.385533957" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
<option id="gnu.both.asm.option.include.paths.1830336522" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" /> <option id="gnu.both.asm.option.include.paths.1830336522" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1011383858" superClass="cdt.managedbuild.tool.gnu.assembler.input" /> <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1011383858" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1157759614" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input" /> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1157759614" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
</tool> </tool>
</toolChain> </toolChain>
</folderInfo> </folderInfo>
<sourceEntries> <sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Packs" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Packs"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Inc" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Inc"/>
</sourceEntries> </sourceEntries>
</configuration> </configuration>
</storageModule> </storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings" /> <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration> </cconfiguration>
<cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661"> <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661" moduleId="org.eclipse.cdt.core.settings" name="Release"> <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings /> <externalSettings/>
<extensions> <extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser" /> <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.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.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.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.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser" /> <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions> </extensions>
</storageModule> </storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> <storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactExtension="elf" 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="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661" name="Release" parent="fr.ac6.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;"> <configuration artifactExtension="elf" 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="rm -rf" description="" id="fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661" name="Release" parent="fr.ac6.managedbuild.config.gnu.cross.exe.release" postannouncebuildStep="Generating hex and Printing size information:" postbuildStep="arm-none-eabi-objcopy -O ihex &quot;${BuildArtifactFileBaseName}.elf&quot; &quot;${BuildArtifactFileBaseName}.hex&quot; &amp;&amp; arm-none-eabi-size &quot;${BuildArtifactFileName}&quot;">
<folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661." name="/" resourcePath=""> <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661." name="/" resourcePath="">
<toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release.293738536" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release"> <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release.293738536" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release">
<option id="fr.ac6.managedbuild.option.gnu.cross.prefix.327330765" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string" /> <option id="fr.ac6.managedbuild.option.gnu.cross.prefix.327330765" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" value="arm-none-eabi-" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1292439930" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32F412ZGTx" valueType="string" /> <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.1292439930" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32F412ZGTx" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.board.1989889501" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="32F412GDISCOVERY" valueType="string" /> <option id="fr.ac6.managedbuild.option.gnu.cross.board.1989889501" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="32F412GDISCOVERY" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList"> <option id="fr.ac6.managedbuild.option.gnu.cross.core.1083960614" name="Core" superClass="fr.ac6.managedbuild.option.gnu.cross.core" valueType="stringList">
<listOptionValue builtIn="false" value="ARM Cortex-M4" /> <listOptionValue builtIn="false" value="ARM Cortex-M4"/>
<listOptionValue builtIn="false" value="CM4" /> <listOptionValue builtIn="false" value="CM4"/>
</option> </option>
<option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1462895718" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated" /> <option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.1462895718" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1842363514" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated" /> <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1842363514" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.fpv4-sp-d16" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.979114293" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated" /> <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.979114293" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.hard" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.711669049" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross" /> <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.711669049" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
<builder buildPath="${workspace_loc:/2P-ProjectPong}/Release" id="fr.ac6.managedbuild.builder.gnu.cross.1795211660" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross"> <builder buildPath="${workspace_loc:/2P-ProjectPong}/Release" id="fr.ac6.managedbuild.builder.gnu.cross.1795211660" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries> <outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Release" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="Release"/>
</outputEntries> </outputEntries>
</builder> </builder>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1810252623" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1810252623" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler">
<option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.991062419" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.debug" valueType="enumerated" /> <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.991062419" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.debug" valueType="enumerated"/>
<option id="gnu.c.compiler.option.debugging.level.785975152" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated" /> <option id="gnu.c.compiler.option.debugging.level.785975152" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>
<option id="gnu.c.compiler.option.include.paths.139148132" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <option id="gnu.c.compiler.option.include.paths.139148132" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../Inc" /> <listOptionValue builtIn="false" value="../Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc" /> <listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy" /> <listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F4xx/Include" /> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F4xx/Include"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include" /> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Utilities/Fonts}&quot;" /> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Drivers/BSP/Components}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Drivers/BSP/Components}&quot;" /> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Drivers/BSP/STM32412G-Discovery}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Drivers/BSP/STM32412G-Discovery}&quot;" /> <listOptionValue builtIn="false" value="&quot;${workspace_loc:/2P-ProjectPong/Utilities/Fonts}&quot;"/>
</option> </option>
<option id="gnu.c.compiler.option.preprocessor.def.symbols.1001009273" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"> <option id="gnu.c.compiler.option.preprocessor.def.symbols.1001009273" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__weak=__attribute__((weak))" /> <listOptionValue builtIn="false" value="__weak=__attribute__((weak))"/>
<listOptionValue builtIn="false" value="__packed=__attribute__((__packed__))" /> <listOptionValue builtIn="false" value="__packed=__attribute__((__packed__))"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER" /> <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="STM32F412Zx" /> <listOptionValue builtIn="false" value="STM32F412Zx"/>
</option> </option>
<option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1766545486" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string" /> <option id="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other.1766545486" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1168227265" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c" /> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1168227265" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1676226394" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s" /> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.1676226394" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
</tool> </tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.953536380" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.953536380" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler">
<option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.1745085217" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.debug" valueType="enumerated" /> <option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.1745085217" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.cpp.optimization.level.debug" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.debugging.level.1358937795" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.debugging.level.max" valueType="enumerated" /> <option id="gnu.cpp.compiler.option.debugging.level.1358937795" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.debugging.level.max" valueType="enumerated"/>
<option id="gnu.cpp.compiler.option.include.paths.1851773756" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <option id="gnu.cpp.compiler.option.include.paths.1851773756" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="../Inc" /> <listOptionValue builtIn="false" value="../Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc" /> <listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy" /> <listOptionValue builtIn="false" value="../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F4xx/Include" /> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F4xx/Include"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include" /> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
</option> </option>
<option id="gnu.cpp.compiler.option.preprocessor.def.symbols.1532878882" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"> <option id="gnu.cpp.compiler.option.preprocessor.def.symbols.1532878882" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__weak=__attribute__((weak))" /> <listOptionValue builtIn="false" value="__weak=__attribute__((weak))"/>
<listOptionValue builtIn="false" value="__packed=__attribute__((__packed__))" /> <listOptionValue builtIn="false" value="__packed=__attribute__((__packed__))"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER" /> <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
<listOptionValue builtIn="false" value="STM32F412Zx" /> <listOptionValue builtIn="false" value="STM32F412Zx"/>
</option> </option>
<option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.203056511" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string" /> <option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.203056511" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.759185457" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp" /> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.759185457" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.182469992" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s" /> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.182469992" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
</tool> </tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.778712005" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.778712005" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker">
<option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.608352848" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../STM32F412ZGTx_FLASH.ld" valueType="string" /> <option id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script.608352848" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.script" value="../STM32F412ZGTx_FLASH.ld" valueType="string"/>
<option id="gnu.c.link.option.libs.1229088125" name="Libraries (-l)" superClass="gnu.c.link.option.libs" /> <option id="gnu.c.link.option.libs.1229088125" name="Libraries (-l)" superClass="gnu.c.link.option.libs"/>
<option id="gnu.c.link.option.paths.2017226878" name="Library search path (-L)" superClass="gnu.c.link.option.paths" /> <option id="gnu.c.link.option.paths.2017226878" name="Library search path (-L)" superClass="gnu.c.link.option.paths"/>
<option id="gnu.c.link.option.ldflags.1752926105" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" /> <option id="gnu.c.link.option.ldflags.1752926105" name="Linker flags" superClass="gnu.c.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
<option id="gnu.c.link.option.other.1704386579" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false" /> <option id="gnu.c.link.option.other.1704386579" name="Other options (-Xlinker [option])" superClass="gnu.c.link.option.other" useByScannerDiscovery="false"/>
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.556710932" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> <inputType id="cdt.managedbuild.tool.gnu.c.linker.input.556710932" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)" /> <additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType> </inputType>
</tool> </tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.660094099" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.660094099" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
<option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.778521967" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../STM32F412ZGTx_FLASH.ld" valueType="string" /> <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.778521967" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../STM32F412ZGTx_FLASH.ld" valueType="string"/>
<option id="gnu.cpp.link.option.libs.825816723" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" /> <option id="gnu.cpp.link.option.libs.825816723" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
<option id="gnu.cpp.link.option.paths.573701591" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" /> <option id="gnu.cpp.link.option.paths.573701591" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
<option id="gnu.cpp.link.option.ldflags.1267310836" superClass="gnu.cpp.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string" /> <option id="gnu.cpp.link.option.ldflags.1267310836" superClass="gnu.cpp.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
<option id="gnu.cpp.link.option.other.451653290" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false" /> <option id="gnu.cpp.link.option.other.451653290" name="Other options (-Xlinker [option])" superClass="gnu.cpp.link.option.other" useByScannerDiscovery="false"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1153958275" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1153958275" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)" /> <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
<additionalInput kind="additionalinput" paths="$(LIBS)" /> <additionalInput kind="additionalinput" paths="$(LIBS)"/>
</inputType> </inputType>
</tool> </tool>
<tool id="fr.ac6.managedbuild.tool.gnu.archiver.380069542" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver" /> <tool id="fr.ac6.managedbuild.tool.gnu.archiver.380069542" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release.360082764" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release.360082764" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release">
<option id="gnu.both.asm.option.include.paths.1830336522" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" /> <option id="gnu.both.asm.option.include.paths.1830336522" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1011383858" superClass="cdt.managedbuild.tool.gnu.assembler.input" /> <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1011383858" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1157759614" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input" /> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1157759614" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
</tool> </tool>
</toolChain> </toolChain>
</folderInfo> </folderInfo>
<sourceEntries> <sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Packs" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Packs"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Inc" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Inc"/>
</sourceEntries> </sourceEntries>
</configuration> </configuration>
</storageModule> </storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings" /> <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration> </cconfiguration>
</storageModule> </storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> <storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="2P-ProjectPong.fr.ac6.managedbuild.target.gnu.cross.exe.1687714442" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe" /> <project id="2P-ProjectPong.fr.ac6.managedbuild.target.gnu.cross.exe.1687714442" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule> </storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders" /> <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2"> <storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug"> <configuration configurationName="Debug">
<resource resourceType="PROJECT" workspacePath="2P-ProjectPong" /> <resource resourceType="PROJECT" workspacePath="2P-ProjectPong"/>
</configuration> </configuration>
<configuration configurationName="Release" /> <configuration configurationName="Release"/>
</storageModule> </storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets" /> <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
<storageModule moduleId="scannerConfiguration"> <storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="" /> <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661;fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1810252623;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1168227265"> <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661;fr.ac6.managedbuild.config.gnu.cross.exe.release.1627959661.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1810252623;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1168227265">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="" /> <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo> </scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279;fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1810252623;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1168227265"> <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279;fr.ac6.managedbuild.config.gnu.cross.exe.debug.549955279.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1810252623;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.1168227265">
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId="" /> <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo> </scannerConfigBuildInfo>
</storageModule> </storageModule>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings" /> <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
</cproject> </cproject>

View File

@ -1,7 +1,7 @@
[PreviousGenFiles] [PreviousGenFiles]
HeaderPath=D:/JCS/Documents/STM32_PROJECTS/2P-ProjectPong/Inc HeaderPath=D:/JCS/Documents/GITRepos/STM32-SchoolProjects/2P-ProjectPong/Inc
HeaderFiles=gpio.h;stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h;usart.h;i2c.h;quadspi.h;fsmc.h;RTE_Components.h;rng.h;tim.h; HeaderFiles=gpio.h;stm32f4xx_it.h;stm32f4xx_hal_conf.h;main.h;usart.h;i2c.h;quadspi.h;fsmc.h;RTE_Components.h;rng.h;tim.h;
SourcePath=D:/JCS/Documents/STM32_PROJECTS/2P-ProjectPong/Src SourcePath=D:/JCS/Documents/GITRepos/STM32-SchoolProjects/2P-ProjectPong/Src
SourceFiles=gpio.c;stm32f4xx_it.c;stm32f4xx_hal_msp.c;main.c;usart.c;i2c.c;quadspi.c;fsmc.c;rng.c;tim.c; SourceFiles=gpio.c;stm32f4xx_it.c;stm32f4xx_hal_msp.c;main.c;usart.c;i2c.c;quadspi.c;fsmc.c;rng.c;tim.c;
[PreviousLibFiles] [PreviousLibFiles]

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>2P-ProjectPong</name> <name>2P-ProjectPong</name>
<comment></comment> <comment />
<projects> <projects>
</projects> </projects>
<buildSpec> <buildSpec>
@ -28,7 +28,7 @@
<link> <link>
<name>Utilities</name> <name>Utilities</name>
<type>2</type> <type>2</type>
<locationURI>PARENT-3-PROJECT_LOC/STM32Cube/Repository/STM32Cube_FW_F4_V1.23.0/Utilities</locationURI> <location>PARENT-3-PROJECT_LOC/STM32Cube/Repository/STM32Cube_FW_F4_V1.23.0/Utilities</location>
</link> </link>
</linkedResources> </linkedResources>
</projectDescription> </projectDescription>

View File

@ -3,7 +3,7 @@ File.Version=6
KeepUserPlacement=false KeepUserPlacement=false
Mcu.Family=STM32F4 Mcu.Family=STM32F4
Mcu.IP0=FSMC Mcu.IP0=FSMC
Mcu.IP1=I2C1 Mcu.IP1=I2C2
Mcu.IP2=NVIC Mcu.IP2=NVIC
Mcu.IP3=QUADSPI Mcu.IP3=QUADSPI
Mcu.IP4=RCC Mcu.IP4=RCC
@ -108,7 +108,7 @@ NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:true NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:true
NVIC.EXTI0_IRQn=true\:0\:0\:false\:false\:true\:true NVIC.EXTI0_IRQn=true\:0\:0\:false\:false\:true\:true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:true NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:true
NVIC.I2C1_EV_IRQn=true\:0\:0\:true\:false\:true\:true NVIC.I2C2_EV_IRQn=true\:0\:0\:false\:false\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:true NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:true
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:true NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:true
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:true NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:true
@ -168,6 +168,7 @@ PB1.Signal=S_DATAIN0DFSDM1
PB10.GPIOParameters=GPIO_Label PB10.GPIOParameters=GPIO_Label
PB10.GPIO_Label=I2C2_SCL PB10.GPIO_Label=I2C2_SCL
PB10.Locked=true PB10.Locked=true
PB10.Mode=I2C
PB10.Signal=I2C2_SCL PB10.Signal=I2C2_SCL
PB11.GPIOParameters=GPIO_Label PB11.GPIOParameters=GPIO_Label
PB11.GPIO_Label=M2_CKIN PB11.GPIO_Label=M2_CKIN
@ -197,16 +198,15 @@ PB5.Signal=I2S3_SD
PB6.GPIOParameters=GPIO_Label PB6.GPIOParameters=GPIO_Label
PB6.GPIO_Label=I2C1_SCL [WM8994ECS/R_SCLK] PB6.GPIO_Label=I2C1_SCL [WM8994ECS/R_SCLK]
PB6.Locked=true PB6.Locked=true
PB6.Mode=I2C
PB6.Signal=I2C1_SCL PB6.Signal=I2C1_SCL
PB7.GPIOParameters=GPIO_Label PB7.GPIOParameters=GPIO_Label
PB7.GPIO_Label=I2C1_SDA [WM8994ECS/R_SDA] PB7.GPIO_Label=I2C1_SDA [WM8994ECS/R_SDA]
PB7.Locked=true PB7.Locked=true
PB7.Mode=I2C
PB7.Signal=I2C1_SDA PB7.Signal=I2C1_SDA
PB9.GPIOParameters=GPIO_Label PB9.GPIOParameters=GPIO_Label
PB9.GPIO_Label=I2C2_SDA PB9.GPIO_Label=I2C2_SDA
PB9.Locked=true PB9.Locked=true
PB9.Mode=I2C
PB9.Signal=I2C2_SDA PB9.Signal=I2C2_SDA
PC10.GPIOParameters=GPIO_Label PC10.GPIOParameters=GPIO_Label
PC10.GPIO_Label=uSD_D2 PC10.GPIO_Label=uSD_D2
@ -475,7 +475,7 @@ ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=SW4STM32 ProjectManager.TargetToolchain=SW4STM32
ProjectManager.ToolChainLocation= ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=true ProjectManager.UnderRoot=true
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_I2C1_Init-I2C1-false-HAL-true,5-MX_FSMC_Init-FSMC-false-HAL-true,6-MX_QUADSPI_Init-QUADSPI-false-HAL-true,7-MX_RNG_Init-RNG-false-HAL-true,8-MX_TIM6_Init-TIM6-false-HAL-true ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_USART1_UART_Init-USART1-false-HAL-true,4-MX_FSMC_Init-FSMC-false-HAL-true,5-MX_QUADSPI_Init-QUADSPI-false-HAL-true,6-MX_RNG_Init-RNG-false-HAL-true,7-MX_TIM6_Init-TIM6-false-HAL-true,8-MX_I2C2_Init-I2C2-false-HAL-true
RCC.48MHZClocksFreq_Value=48000000 RCC.48MHZClocksFreq_Value=48000000
RCC.AHBFreq_Value=16000000 RCC.AHBFreq_Value=16000000
RCC.APB1CLKDivider=RCC_HCLK_DIV2 RCC.APB1CLKDivider=RCC_HCLK_DIV2

View File

@ -60,13 +60,13 @@
/* USER CODE END Includes */ /* USER CODE END Includes */
extern I2C_HandleTypeDef hi2c1; extern I2C_HandleTypeDef hi2c2;
/* USER CODE BEGIN Private defines */ /* USER CODE BEGIN Private defines */
/* USER CODE END Private defines */ /* USER CODE END Private defines */
void MX_I2C1_Init(void); void MX_I2C2_Init(void);
/* USER CODE BEGIN Prototypes */ /* USER CODE BEGIN Prototypes */

View File

@ -0,0 +1,27 @@
/*
* sensor_interface.h
*
* Created on: 7 déc. 2019
* Author: JackCarterSmith
*/
#ifndef SENSOR_INTERFACE_H_
#define SENSOR_INTERFACE_H_
#include "stm32412g_discovery.h"
#define MEMS_ADD_RD 0x00D7
#define MEMS_ADD_WR 0x00D6
#define CTRL1_XL_REGISTER 0x10
#define CTRL1_OUT_REGISTER 0x11
typedef struct {
int16_t Pitch;
int16_t Yaw;
int16_t Roll;
}PP_GyroAnglesTypeDef;
void initGyro();
void getAnglesFromSensor();
#endif /* SENSOR_INTERFACE_H_ */

View File

@ -72,7 +72,7 @@ void DebugMon_Handler(void);
void PendSV_Handler(void); void PendSV_Handler(void);
void SysTick_Handler(void); void SysTick_Handler(void);
void EXTI0_IRQHandler(void); void EXTI0_IRQHandler(void);
void I2C1_EV_IRQHandler(void); void I2C2_EV_IRQHandler(void);
void TIM6_IRQHandler(void); void TIM6_IRQHandler(void);
/* USER CODE BEGIN EFP */ /* USER CODE BEGIN EFP */

View File

@ -36,6 +36,9 @@ struct gameControlByte {
} gCtrlByte; } gCtrlByte;
/**
* @brief Generate new ball's pos and acc from random seed
*/
void generateNewBall(Game_ModeTypdef type, uint32_t seed) { void generateNewBall(Game_ModeTypdef type, uint32_t seed) {
switch (type) { switch (type) {
case MULTI_MODE: case MULTI_MODE:
@ -43,19 +46,20 @@ void generateNewBall(Game_ModeTypdef type, uint32_t seed) {
case SOLO_MODE: case SOLO_MODE:
default: default:
ballDatas.posX = (seed & 0xFF) % 240; ballDatas.posX = (seed & 0xFF) % 240;
ballDatas.posY = ((seed & 0xFF00 >> 7) % 200) + 60; ballDatas.posY = ((seed & 0xFF00 >> 7) % 180) + 60;
if (ballDatas.posX < 0) ballDatas.posX = -ballDatas.posX; if (ballDatas.posX < 0) ballDatas.posX = -ballDatas.posX;
if (ballDatas.posY < 0) ballDatas.posY = -ballDatas.posY; if (ballDatas.posY < 0) ballDatas.posY = -ballDatas.posY;
ballDatas.accX = ((seed & 0xFF0000 >> 15) % 8) + 4; ballDatas.accX = ((seed & 0xFF0000 >> 15) % 8) + 4;
ballDatas.accY = ((seed & 0xFF000000 >> 31) % 8) + 4; ballDatas.accY = ((seed & 0xFF000000 >> 31) % 8) + 4;
//ballDatas.accX = 5;
//ballDatas.accY = 3;
if (seed & 0x1) ballDatas.accX = -ballDatas.accX; if (seed & 0x1) ballDatas.accX = -ballDatas.accX;
if (seed & 0x2 >> 1) ballDatas.accY = -ballDatas.accY; if (seed & 0x2 >> 1) ballDatas.accY = -ballDatas.accY;
break; break;
} }
} }
/**
* @brief Collision and animation engine for the ball/bar
*/
void ballRayTracingEngine(PP_BarTypeDef *barDatas) { void ballRayTracingEngine(PP_BarTypeDef *barDatas) {
if (ballDatas.posX + ballDatas.accX > 236) { if (ballDatas.posX + ballDatas.accX > 236) {
ballDatas.posX = 236; ballDatas.posX = 236;
@ -84,20 +88,26 @@ void ballRayTracingEngine(PP_BarTypeDef *barDatas) {
} }
} }
/**
* @brief Refresh ball displayed on screen
*/
void updateBallDisplay() { void updateBallDisplay() {
BSP_LCD_SetTextColor(LCD_COLOR_BLACK); BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
BSP_LCD_FillRect(displayedBall.posX, displayedBall.posY, 4, 4); //Clean previous ball BSP_LCD_FillRect(displayedBall.posX, displayedBall.posY, 4, 4); //Clean previous ball
BSP_LCD_SetTextColor(LCD_COLOR_WHITE); BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
BSP_LCD_FillRect(ballDatas.posX, ballDatas.posY, 4, 4); //Draw the ball !!! BSP_LCD_FillRect(ballDatas.posX, ballDatas.posY, 4, 4); //Draw the ball at new pos
displayedBall.posX = ballDatas.posX; displayedBall.posX = ballDatas.posX;
displayedBall.posY = ballDatas.posY; displayedBall.posY = ballDatas.posY;
if (ballDatas.posY == 236) displayEndMenu(); if (ballDatas.posY >= 236) displayEndMenu();
} }
/**
* @brief Refresh bar displayed on screen
*/
void updatePongBar(PP_BarTypeDef *barDatas) { void updatePongBar(PP_BarTypeDef *barDatas) {
BSP_LCD_SetTextColor(LCD_COLOR_BLACK); BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
BSP_LCD_FillRect(0, BSP_LCD_GetYSize() - 12, BSP_LCD_GetXSize(), 7); //Clean previous ball BSP_LCD_FillRect(0, BSP_LCD_GetYSize() - 12, BSP_LCD_GetXSize(), 7); //Clean previous bar
BSP_LCD_SetTextColor(LCD_COLOR_WHITE); BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
if (barDatas->pos + barDatas->acc > BSP_LCD_GetXSize() - 20) { if (barDatas->pos + barDatas->acc > BSP_LCD_GetXSize() - 20) {
barDatas->pos = BSP_LCD_GetXSize() - 20; barDatas->pos = BSP_LCD_GetXSize() - 20;
@ -106,23 +116,26 @@ void updatePongBar(PP_BarTypeDef *barDatas) {
} else { } else {
barDatas->pos += barDatas->acc; barDatas->pos += barDatas->acc;
} }
BSP_LCD_FillRect(barDatas->pos - 20, BSP_LCD_GetYSize() - 12, 40, 7); BSP_LCD_FillRect(barDatas->pos - 20, BSP_LCD_GetYSize() - 12, 40, 7); //Draw the bar at new pos
} }
/**
* @brief Refresh displayed score on game screen
*/
void updateScoreArea(Game_ModeTypdef type, uint16_t newScore) { void updateScoreArea(Game_ModeTypdef type, uint16_t newScore) {
char sTextBuffer[32]; char sTextBuffer[32];
BSP_LCD_SetFont(&Font24); BSP_LCD_SetFont(&Font24);
BSP_LCD_SetTextColor(LCD_COLOR_BLACK); BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
//BSP_LCD_FillRect(BSP_LCD_GetXSize() / 2 - 4 * BSP_LCD_GetFont()->Width, 1, 8 * BSP_LCD_GetFont()->Width, BSP_LCD_GetFont()->Height - 3); //Clean previous ball
BSP_LCD_SetTextColor(LCD_COLOR_WHITE); BSP_LCD_SetTextColor(LCD_COLOR_WHITE);
sprintf(sTextBuffer, "%d", newScore); sprintf(sTextBuffer, "%d", newScore);
//BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize() / 2 - (strlen(sTextBuffer)/2 * BSP_LCD_GetFont()->Width), 2, (uint8_t *)sTextBuffer, LEFT_MODE);
BSP_LCD_DisplayStringAt(6, 2, (uint8_t *)sTextBuffer, RIGHT_MODE); BSP_LCD_DisplayStringAt(6, 2, (uint8_t *)sTextBuffer, RIGHT_MODE);
//BSP_LCD_DrawRect(BSP_LCD_GetXSize() / 2 - (4 * BSP_LCD_GetFont()->Width) - 1, 0, 8 * BSP_LCD_GetFont()->Width + 1, BSP_LCD_GetFont()->Height - 3);
BSP_LCD_FillRect(10, 24, BSP_LCD_GetXSize() - 20, 1); BSP_LCD_FillRect(10, 24, BSP_LCD_GetXSize() - 20, 1);
} }
/**
* @brief Get a new random number
*/
uint32_t genSeed() { uint32_t genSeed() {
uint32_t tmp = 0; uint32_t tmp = 0;
@ -134,6 +147,9 @@ uint32_t genSeed() {
return tmp; return tmp;
} }
/**
* @brief Main function called when need to update screen
*/
void refreshCurrScreen(uint32_t _t, PP_BarTypeDef *_barDatas) { void refreshCurrScreen(uint32_t _t, PP_BarTypeDef *_barDatas) {
char sTextBuffer[32]; char sTextBuffer[32];
@ -151,7 +167,7 @@ void refreshCurrScreen(uint32_t _t, PP_BarTypeDef *_barDatas) {
oldTicks = _t; oldTicks = _t;
} }
} else if (currGameMode == MULTI_MODE) { } else if (currGameMode == MULTI_MODE) {
//Nothing
} }
} else if (currMenu == MENU_MAIN || currMenu == MENU_END) { } else if (currMenu == MENU_MAIN || currMenu == MENU_END) {
if (_t - oldTicks >= 30 || _t - oldTicks < 0) { if (_t - oldTicks >= 30 || _t - oldTicks < 0) {
@ -169,6 +185,9 @@ void refreshCurrScreen(uint32_t _t, PP_BarTypeDef *_barDatas) {
} }
} }
/**
* @brief Just a cool screen to display when the board start
*/
void displayLoadingScreen() { void displayLoadingScreen() {
char sTextBuffer[32]; char sTextBuffer[32];
@ -208,6 +227,9 @@ void displayStartMenu(PP_HighScoresTypeDef hsDatas) {
BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize() / 2 - 5 * 12, BSP_LCD_GetYSize() / 2 + 40, (uint8_t *)sTextBuffer, LEFT_MODE); BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize() / 2 - 5 * 12, BSP_LCD_GetYSize() / 2 + 40, (uint8_t *)sTextBuffer, LEFT_MODE);
} }
/**
* @brief Generate and display new game
*/
void displayGameArea(Game_ModeTypdef type, PP_BarTypeDef *_barDatas) { void displayGameArea(Game_ModeTypdef type, PP_BarTypeDef *_barDatas) {
uint32_t seed = 0; uint32_t seed = 0;
currScore = 0; currScore = 0;
@ -247,7 +269,7 @@ void displayEndMenu() {
sprintf(sTextBuffer, "SCORE: %d", currScore); sprintf(sTextBuffer, "SCORE: %d", currScore);
BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize() / 2 - (strlen(sTextBuffer)/2 * BSP_LCD_GetFont()->Width), BSP_LCD_GetYSize() / 2 - 40, (uint8_t *)sTextBuffer, LEFT_MODE); BSP_LCD_DisplayStringAt(BSP_LCD_GetXSize() / 2 - (strlen(sTextBuffer)/2 * BSP_LCD_GetFont()->Width), BSP_LCD_GetYSize() / 2 - 40, (uint8_t *)sTextBuffer, LEFT_MODE);
//TODO: Save new HighScore if greather than the old one //TODO: Save new HighScore in EEPROM if greather than the old one
/* READY TO START NEW GAME! */ /* READY TO START NEW GAME! */
strcpy(sTextBuffer, "Press START\0"); strcpy(sTextBuffer, "Press START\0");

View File

@ -67,7 +67,6 @@
PA3 ------> USART2_RX PA3 ------> USART2_RX
PA4 ------> I2S3_WS PA4 ------> I2S3_WS
PB1 ------> S_DATAIN0DFSDM1 PB1 ------> S_DATAIN0DFSDM1
PB10 ------> I2C2_SCL
PB11 ------> I2S_CKIN PB11 ------> I2S_CKIN
PB12 ------> I2S3_CK PB12 ------> I2S3_CK
PC7 ------> I2S3_MCK PC7 ------> I2S3_MCK
@ -83,7 +82,8 @@
PD2 ------> SDIO_CMD PD2 ------> SDIO_CMD
PB4 ------> I2S3_ext_SD PB4 ------> I2S3_ext_SD
PB5 ------> I2S3_SD PB5 ------> I2S3_SD
PB9 ------> I2C2_SDA PB6 ------> I2C1_SCL
PB7 ------> I2C1_SDA
*/ */
void MX_GPIO_Init(void) void MX_GPIO_Init(void)
{ {
@ -184,14 +184,6 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); HAL_GPIO_Init(GPIOG, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = I2C2_SCL_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
HAL_GPIO_Init(I2C2_SCL_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */ /*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = M2_CKIN_Pin; GPIO_InitStruct.Pin = M2_CKIN_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
@ -284,13 +276,13 @@ void MX_GPIO_Init(void)
GPIO_InitStruct.Alternate = GPIO_AF6_SPI3; GPIO_InitStruct.Alternate = GPIO_AF6_SPI3;
HAL_GPIO_Init(CODEC_I2S3_SD_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(CODEC_I2S3_SD_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pin : PtPin */ /*Configure GPIO pins : PBPin PBPin */
GPIO_InitStruct.Pin = I2C2_SDA_Pin; GPIO_InitStruct.Pin = I2C1_SCL_Pin|I2C1_SDA_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF9_I2C2; GPIO_InitStruct.Alternate = GPIO_AF4_I2C1;
HAL_GPIO_Init(I2C2_SDA_GPIO_Port, &GPIO_InitStruct); HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
/* EXTI interrupt init*/ /* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0); HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);

View File

@ -54,22 +54,22 @@
/* USER CODE END 0 */ /* USER CODE END 0 */
I2C_HandleTypeDef hi2c1; I2C_HandleTypeDef hi2c2;
/* I2C1 init function */ /* I2C2 init function */
void MX_I2C1_Init(void) void MX_I2C2_Init(void)
{ {
hi2c1.Instance = I2C1; hi2c2.Instance = I2C2;
hi2c1.Init.ClockSpeed = 100000; hi2c2.Init.ClockSpeed = 100000;
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2;
hi2c1.Init.OwnAddress1 = 0; hi2c2.Init.OwnAddress1 = 0;
hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hi2c1.Init.OwnAddress2 = 0; hi2c2.Init.OwnAddress2 = 0;
hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
if (HAL_I2C_Init(&hi2c1) != HAL_OK) if (HAL_I2C_Init(&hi2c2) != HAL_OK)
{ {
Error_Handler(); Error_Handler();
} }
@ -80,58 +80,65 @@ void HAL_I2C_MspInit(I2C_HandleTypeDef* i2cHandle)
{ {
GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitTypeDef GPIO_InitStruct = {0};
if(i2cHandle->Instance==I2C1) if(i2cHandle->Instance==I2C2)
{ {
/* USER CODE BEGIN I2C1_MspInit 0 */ /* USER CODE BEGIN I2C2_MspInit 0 */
/* USER CODE END I2C1_MspInit 0 */ /* USER CODE END I2C2_MspInit 0 */
__HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE();
/**I2C1 GPIO Configuration /**I2C2 GPIO Configuration
PB6 ------> I2C1_SCL PB10 ------> I2C2_SCL
PB7 ------> I2C1_SDA PB9 ------> I2C2_SDA
*/ */
GPIO_InitStruct.Pin = I2C1_SCL_Pin|I2C1_SDA_Pin; GPIO_InitStruct.Pin = I2C2_SCL_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF4_I2C1; GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); HAL_GPIO_Init(I2C2_SCL_GPIO_Port, &GPIO_InitStruct);
/* I2C1 clock enable */ GPIO_InitStruct.Pin = I2C2_SDA_Pin;
__HAL_RCC_I2C1_CLK_ENABLE(); GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF9_I2C2;
HAL_GPIO_Init(I2C2_SDA_GPIO_Port, &GPIO_InitStruct);
/* I2C1 interrupt Init */ /* I2C2 clock enable */
HAL_NVIC_SetPriority(I2C1_EV_IRQn, 0, 0); __HAL_RCC_I2C2_CLK_ENABLE();
HAL_NVIC_EnableIRQ(I2C1_EV_IRQn);
/* USER CODE BEGIN I2C1_MspInit 1 */
/* USER CODE END I2C1_MspInit 1 */ /* I2C2 interrupt Init */
HAL_NVIC_SetPriority(I2C2_EV_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(I2C2_EV_IRQn);
/* USER CODE BEGIN I2C2_MspInit 1 */
/* USER CODE END I2C2_MspInit 1 */
} }
} }
void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle) void HAL_I2C_MspDeInit(I2C_HandleTypeDef* i2cHandle)
{ {
if(i2cHandle->Instance==I2C1) if(i2cHandle->Instance==I2C2)
{ {
/* USER CODE BEGIN I2C1_MspDeInit 0 */ /* USER CODE BEGIN I2C2_MspDeInit 0 */
/* USER CODE END I2C1_MspDeInit 0 */ /* USER CODE END I2C2_MspDeInit 0 */
/* Peripheral clock disable */ /* Peripheral clock disable */
__HAL_RCC_I2C1_CLK_DISABLE(); __HAL_RCC_I2C2_CLK_DISABLE();
/**I2C1 GPIO Configuration /**I2C2 GPIO Configuration
PB6 ------> I2C1_SCL PB10 ------> I2C2_SCL
PB7 ------> I2C1_SDA PB9 ------> I2C2_SDA
*/ */
HAL_GPIO_DeInit(GPIOB, I2C1_SCL_Pin|I2C1_SDA_Pin); HAL_GPIO_DeInit(GPIOB, I2C2_SCL_Pin|I2C2_SDA_Pin);
/* I2C1 interrupt Deinit */ /* I2C2 interrupt Deinit */
HAL_NVIC_DisableIRQ(I2C1_EV_IRQn); HAL_NVIC_DisableIRQ(I2C2_EV_IRQn);
/* USER CODE BEGIN I2C1_MspDeInit 1 */ /* USER CODE BEGIN I2C2_MspDeInit 1 */
/* USER CODE END I2C1_MspDeInit 1 */ /* USER CODE END I2C2_MspDeInit 1 */
} }
} }

View File

@ -54,6 +54,7 @@
#include "stm32412g_discovery.h" #include "stm32412g_discovery.h"
#include "stm32412g_discovery_lcd.h" #include "stm32412g_discovery_lcd.h"
#include "game_engine.h" #include "game_engine.h"
#include "sensor_interface.h"
//#include "lsm6dsl/lsm6dsl.h" //#include "lsm6dsl/lsm6dsl.h"
/* USER CODE END Includes */ /* USER CODE END Includes */
@ -110,31 +111,31 @@ int main(void)
/* USER CODE BEGIN Init */ /* USER CODE BEGIN Init */
PP_HighScoresTypeDef HighScoresDatas; PP_HighScoresTypeDef HighScoresDatas;
PP_GyroAnglesTypeDef AnglesDatas;
/* USER CODE END Init */ /* USER CODE END Init */
/* Configure the system clock */ /* Configure the system clock */
SystemClock_Config(); SystemClock_Config();
/* USER CODE BEGIN SysInit */ /* USER CODE BEGIN SysInit */
RngHandle.Instance = RNG; RngHandle.Instance = RNG; // Associate periph to handle
/* USER CODE END SysInit */ /* USER CODE END SysInit */
/* Initialize all configured peripherals */ /* Initialize all configured peripherals */
MX_GPIO_Init(); MX_GPIO_Init();
MX_USART1_UART_Init(); MX_USART1_UART_Init();
MX_I2C1_Init();
MX_FSMC_Init(); MX_FSMC_Init();
MX_QUADSPI_Init(); MX_QUADSPI_Init();
MX_RNG_Init(); MX_RNG_Init();
MX_TIM6_Init(); MX_TIM6_Init();
MX_I2C2_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
initPeriph(); // Start all periph func initPeriph(); // Start all periph func
displayLoadingScreen(); displayLoadingScreen();
barDatas.pos = BSP_LCD_GetXSize() / 2; barDatas.pos = BSP_LCD_GetXSize() / 2;
//testEEPROM();
/* Load from NOR Flash and display high scores */ /* Load from EEPROM and display high scores */
getHighScores(&HighScoresDatas); getHighScores(&HighScoresDatas);
displayStartMenu(HighScoresDatas); displayStartMenu(HighScoresDatas);
/* USER CODE END 2 */ /* USER CODE END 2 */
@ -143,13 +144,30 @@ int main(void)
/* USER CODE BEGIN WHILE */ /* USER CODE BEGIN WHILE */
while (1) while (1)
{ {
if (BSP_JOY_GetState() == JOY_UP) { if (getCurrMenu() == MENU_GAME) {
barDatas.acc = -6; /* Joystick Debug Mode */
} else if (BSP_JOY_GetState() == JOY_DOWN) { /*
barDatas.acc = 6; if (BSP_JOY_GetState() == JOY_UP) {
} else { barDatas.acc = -6;
barDatas.acc = 0; } else if (BSP_JOY_GetState() == JOY_DOWN) {
barDatas.acc = 6;
} else {
barDatas.acc = 0;
}
*/
/* Gyro angles -> bar acceleration conversion */
getAnglesFromSensor(&AnglesDatas);
if (AnglesDatas.Roll <= 65 && AnglesDatas.Roll > 0) {
barDatas.acc = -5;
} else if (AnglesDatas.Roll >= -65 && AnglesDatas.Roll < 0) {
barDatas.acc = 5;
} else if (AnglesDatas.Roll > 65 || AnglesDatas.Roll < -65) {
barDatas.acc = 0;
}
} }
/* The only one important function, trigger refresh screen */
refreshCurrScreen(ticks, &barDatas); refreshCurrScreen(ticks, &barDatas);
/* USER CODE END WHILE */ /* USER CODE END WHILE */
@ -209,26 +227,35 @@ void SystemClock_Config(void)
} }
/* USER CODE BEGIN 4 */ /* USER CODE BEGIN 4 */
/**
* @brief Init all necessary hardware periph
*/
void initPeriph() { void initPeriph() {
if (HAL_RNG_Init(&RngHandle) != HAL_OK) return;
if (HAL_TIM_Base_Init(&htim6) != HAL_OK) return;
if (HAL_TIM_Base_Start_IT(&htim6) != HAL_OK) return;
BSP_LED_Init(LED_BLUE); BSP_LED_Init(LED_BLUE);
BSP_LED_Init(LED_RED); BSP_LED_Init(LED_RED);
BSP_LED_Init(LED_ORANGE); BSP_LED_Init(LED_ORANGE);
BSP_LED_Init(LED_GREEN); BSP_LED_Init(LED_GREEN);
//if (BSP_JOY_Init(JOY_MODE_EXTI) != HAL_OK) return; if (HAL_RNG_Init(&RngHandle) != HAL_OK) return;
BSP_LED_On(LED_BLUE);
if (HAL_TIM_Base_Init(&htim6) != HAL_OK) return;
BSP_LED_On(LED_RED);
if (HAL_TIM_Base_Start_IT(&htim6) != HAL_OK) return;
BSP_LED_On(LED_ORANGE);
initGyro();
if (BSP_LCD_InitEx(LCD_ORIENTATION_PORTRAIT) == LCD_ERROR) return; if (BSP_LCD_InitEx(LCD_ORIENTATION_PORTRAIT) == LCD_ERROR) return;
HAL_Delay(400); HAL_Delay(400);
BSP_LCD_Clear(LCD_COLOR_BLACK); BSP_LCD_Clear(LCD_COLOR_BLACK);
BSP_LED_On(LED_GREEN); BSP_LED_On(LED_GREEN);
} }
/**
* @brief Function to retrieve HighScores from external EEPROM
*/
void getHighScores(PP_HighScoresTypeDef* hsDatas) { void getHighScores(PP_HighScoresTypeDef* hsDatas) {
uint32_t tmp = 0; uint32_t tmp = 0;
/* Cheat, use random number generator because no EEPROM connected */
// Can be use to test RNG
if (HAL_RNG_Init(&RngHandle) == HAL_OK) { if (HAL_RNG_Init(&RngHandle) == HAL_OK) {
tmp = HAL_RNG_GetRandomNumber(&RngHandle); tmp = HAL_RNG_GetRandomNumber(&RngHandle);
} else BSP_LED_On(LED_RED); } else BSP_LED_On(LED_RED);
@ -238,21 +265,28 @@ void getHighScores(PP_HighScoresTypeDef* hsDatas) {
hsDatas->Multi_HS = (uint8_t)(tmp>>24); hsDatas->Multi_HS = (uint8_t)(tmp>>24);
} }
/**
* @brief Callback function for cadencer timer
*/
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
//BSP_LED_Toggle(LED_BLUE); // Increment ticks all 10ms
if (++ticks >= 0xffffffffffffffff) ticks = 0; if (++ticks >= 0xffffffffffffffff) ticks = 0;
//HAL_TIM_Base_Stop_IT(&htim6);
} }
/**
* @brief Callback function for Joystick handling
*/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
// Scan current displayed "screen" to correctly interpret Joystick inputs
switch(getCurrMenu()) { switch(getCurrMenu()) {
case MENU_GAME: case MENU_GAME:
// Empty
break; break;
default: default:
case MENU_END:
case MENU_MAIN: case MENU_MAIN:
if (BSP_JOY_GetState() == JOY_SEL) { if (BSP_JOY_GetState() == JOY_SEL) {
displayGameArea(SOLO_MODE, &barDatas); displayGameArea(SOLO_MODE, &barDatas); // Start new game from main menu
} }
break; break;
} }

View File

@ -0,0 +1,39 @@
/*
* sensor_interface.c
*
* Created on: 7 déc. 2019
* Author: JackCarterSmith
*/
#include "sensor_interface.h"
#include "i2c.h"
#include "math.h"
void initGyro() {
uint8_t MEMS_ODR_CONFIG []= {0x88};
//Configure all configurations datas for sensor chip
HAL_I2C_Mem_Write(&hi2c2,MEMS_ADD_WR,CTRL1_XL_REGISTER,1,MEMS_ODR_CONFIG,1,HAL_TIMEOUT);
}
/**
* @brief function to retrieve values from sensors and calculate angles from it
*/
void getAnglesFromSensor(PP_GyroAnglesTypeDef *anglesVar) {
int16_t OUTX_XL[1],OUTY_XL[1],OUTZ_XL[1];
float tempX, tempY, tempZ;
HAL_I2C_Mem_Read(&hi2c2, MEMS_ADD_RD, 0x28, 1, (uint8_t*)&OUTX_XL, 2, HAL_TIMEOUT);
HAL_I2C_Mem_Read(&hi2c2, MEMS_ADD_RD, 0x2A, 1, (uint8_t*)&OUTY_XL, 2, HAL_TIMEOUT);
HAL_I2C_Mem_Read(&hi2c2, MEMS_ADD_RD, 0x2C, 1, (uint8_t*)&OUTZ_XL, 2, HAL_TIMEOUT);
tempX = (float)OUTX_XL[0];
tempY = (float)OUTY_XL[0];
tempZ = (float)OUTZ_XL[0];
anglesVar->Pitch = (int16_t)atanf(-tempY / tempZ) * 60;
anglesVar->Yaw = (int16_t)atanf(-tempX / tempZ) * 60;
anglesVar->Roll = (int16_t)atanf(-tempX / tempY) * 60;
}

View File

@ -71,7 +71,7 @@
/* USER CODE END 0 */ /* USER CODE END 0 */
/* External variables --------------------------------------------------------*/ /* External variables --------------------------------------------------------*/
extern I2C_HandleTypeDef hi2c1; extern I2C_HandleTypeDef hi2c2;
extern TIM_HandleTypeDef htim6; extern TIM_HandleTypeDef htim6;
/* USER CODE BEGIN EV */ /* USER CODE BEGIN EV */
@ -228,17 +228,17 @@ void EXTI0_IRQHandler(void)
} }
/** /**
* @brief This function handles I2C1 event interrupt. * @brief This function handles I2C2 event interrupt.
*/ */
void I2C1_EV_IRQHandler(void) void I2C2_EV_IRQHandler(void)
{ {
/* USER CODE BEGIN I2C1_EV_IRQn 0 */ /* USER CODE BEGIN I2C2_EV_IRQn 0 */
/* USER CODE END I2C1_EV_IRQn 0 */ /* USER CODE END I2C2_EV_IRQn 0 */
HAL_I2C_EV_IRQHandler(&hi2c1); HAL_I2C_EV_IRQHandler(&hi2c2);
/* USER CODE BEGIN I2C1_EV_IRQn 1 */ /* USER CODE BEGIN I2C2_EV_IRQn 1 */
/* USER CODE END I2C1_EV_IRQn 1 */ /* USER CODE END I2C2_EV_IRQn 1 */
} }
/** /**