towards sparkle

This commit is contained in:
Attila BODY 2018-12-16 17:56:48 +01:00
parent d140baf50e
commit 087af69592
10 changed files with 414 additions and 204 deletions

View file

@ -1,4 +1,4 @@
<?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.2038470026"> <cconfiguration id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.2038470026">
@ -17,12 +17,12 @@
<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.2038470026" 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.2038470026" 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.2038470026." name="/" resourcePath=""> <folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.debug.2038470026." name="/" resourcePath="">
<toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.340210871" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug"> <toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug.340210871" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.debug">
<option id="fr.ac6.managedbuild.option.gnu.cross.prefix.1045407890" 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.1045407890" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix" useByScannerDiscovery="false" value="arm-none-eabi-" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.mcu.925476639" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" value="STM32F103C8Tx" valueType="string" /> <option id="fr.ac6.managedbuild.option.gnu.cross.mcu.925476639" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu" useByScannerDiscovery="false" value="STM32F103C8Tx" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.board.1256163597" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" value="NeoPixelF103MVP" valueType="string" /> <option id="fr.ac6.managedbuild.option.gnu.cross.board.1256163597" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board" useByScannerDiscovery="false" value="NeoPixelF103MVP" valueType="string"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.887333743" 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.887333743" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.instructionSet.thumbII" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1119905752" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" value="fr.ac6.managedbuild.option.gnu.cross.fpu.no" valueType="enumerated" /> <option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1119905752" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.fpu.no" valueType="enumerated"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1951111972" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.soft" valueType="enumerated" /> <option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1951111972" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi" useByScannerDiscovery="false" value="fr.ac6.managedbuild.option.gnu.cross.floatabi.soft" valueType="enumerated"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross.1151237480" 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.1151237480" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
<builder buildPath="${workspace_loc:/NeoPixelF103MVP}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.890651759" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross"> <builder buildPath="${workspace_loc:/NeoPixelF103MVP}/Debug" id="fr.ac6.managedbuild.builder.gnu.cross.890651759" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="fr.ac6.managedbuild.builder.gnu.cross">
<outputEntries> <outputEntries>
@ -33,6 +33,7 @@
<option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.2122658761" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.none" valueType="enumerated"/> <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.2122658761" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.none" valueType="enumerated"/>
<option id="gnu.c.compiler.option.debugging.level.541569806" 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.541569806" 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.805993678" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <option id="gnu.c.compiler.option.include.paths.805993678" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}&quot;"/>
<listOptionValue builtIn="false" value="../Inc"/> <listOptionValue builtIn="false" value="../Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/> <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/>
@ -53,6 +54,7 @@
<option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.166639814" 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.166639814" 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.1260193725" 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.1260193725" 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.1034697241" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <option id="gnu.cpp.compiler.option.include.paths.1034697241" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}&quot;"/>
<listOptionValue builtIn="false" value="../Inc"/> <listOptionValue builtIn="false" value="../Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/> <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/>
@ -66,6 +68,7 @@
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/> <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
</option> </option>
<option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.652027465" 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.652027465" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
<option id="gnu.cpp.compiler.option.dialect.std.1784254578" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.c++1y" valueType="enumerated"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1264884591" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1264884591" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1687591499" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1687591499" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
</tool> </tool>
@ -80,10 +83,10 @@
</inputType> </inputType>
</tool> </tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.151905399" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.151905399" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker">
<option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.105541979" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" value="../STM32F103C8Tx_FLASH.ld" valueType="string" /> <option id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script.105541979" name="Linker Script (-T)" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.script" useByScannerDiscovery="false" value="../STM32F103C8Tx_FLASH.ld" valueType="string"/>
<option id="gnu.cpp.link.option.libs.1487246394" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" /> <option id="gnu.cpp.link.option.libs.1487246394" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" useByScannerDiscovery="false"/>
<option id="gnu.cpp.link.option.paths.660882060" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" /> <option id="gnu.cpp.link.option.paths.660882060" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false"/>
<option id="gnu.cpp.link.option.flags.805922947" 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.805922947" name="Linker flags" superClass="gnu.cpp.link.option.flags" useByScannerDiscovery="false" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.998064398" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.998064398" 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)"/>
@ -91,17 +94,18 @@
</tool> </tool>
<tool id="fr.ac6.managedbuild.tool.gnu.archiver.451086240" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/> <tool id="fr.ac6.managedbuild.tool.gnu.archiver.451086240" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver"/>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.253377116" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler"> <tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.253377116" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler">
<option id="gnu.both.asm.option.include.paths.1101506282" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" /> <option id="gnu.both.asm.option.include.paths.1101506282" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths" useByScannerDiscovery="false"/>
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.937170391" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> <inputType id="cdt.managedbuild.tool.gnu.assembler.input.937170391" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1734209486" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1734209486" 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="startup" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="App"/>
<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="Inc"/> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Inc"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup"/>
</sourceEntries> </sourceEntries>
</configuration> </configuration>
</storageModule> </storageModule>
@ -139,6 +143,7 @@
<option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.2122658761" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.most" valueType="enumerated"/> <option defaultValue="gnu.c.optimization.level.none" id="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level.2122658761" name="Optimization Level" superClass="fr.ac6.managedbuild.gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="fr.ac6.managedbuild.gnu.c.optimization.level.most" valueType="enumerated"/>
<option id="gnu.c.compiler.option.debugging.level.541569806" 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.541569806" 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.805993678" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <option id="gnu.c.compiler.option.include.paths.805993678" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}&quot;"/>
<listOptionValue builtIn="false" value="../Inc"/> <listOptionValue builtIn="false" value="../Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/> <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/>
@ -159,19 +164,22 @@
<option defaultValue="gnu.cpp.optimization.level.none" id="fr.ac6.managedbuild.gnu.cpp.compiler.option.optimization.level.166639814" 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.166639814" 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.1260193725" 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.1260193725" 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.1034697241" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath"> <option id="gnu.cpp.compiler.option.include.paths.1034697241" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}}&quot;"/>
<listOptionValue builtIn="false" value="../Inc"/> <listOptionValue builtIn="false" value="../Inc"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/> <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F1xx/Include"/>
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/> <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
<listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy"/> <listOptionValue builtIn="false" value="../Drivers/STM32F1xx_HAL_Driver/Inc/Legacy"/>
</option> </option>
<option id="gnu.cpp.compiler.option.preprocessor.def.symbols.2073291198" 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.2073291198" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols"/>
<option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.652027465" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string"/>
<option id="gnu.cpp.compiler.option.preprocessor.def.650920099" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__weak=&quot;__attribute__((weak))&quot;"/> <listOptionValue builtIn="false" value="__weak=&quot;__attribute__((weak))&quot;"/>
<listOptionValue builtIn="false" value="__packed=&quot;__attribute__((__packed__))&quot;"/> <listOptionValue builtIn="false" value="__packed=&quot;__attribute__((__packed__))&quot;"/>
<listOptionValue builtIn="false" value="STM32F103xB"/> <listOptionValue builtIn="false" value="STM32F103xB"/>
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/> <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
</option> </option>
<option id="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other.652027465" name="Other flags" superClass="fr.ac6.managedbuild.gnu.cpp.compiler.option.misc.other" useByScannerDiscovery="false" value="-fmessage-length=0" valueType="string" /> <option id="gnu.cpp.compiler.option.dialect.std.1608548043" superClass="gnu.cpp.compiler.option.dialect.std" value="gnu.cpp.compiler.dialect.c++1y" valueType="enumerated"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1264884591" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1264884591" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1687591499" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/> <inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.1687591499" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
</tool> </tool>
@ -190,6 +198,7 @@
<option id="gnu.cpp.link.option.libs.1487246394" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/> <option id="gnu.cpp.link.option.libs.1487246394" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs"/>
<option id="gnu.cpp.link.option.paths.660882060" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/> <option id="gnu.cpp.link.option.paths.660882060" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths"/>
<option id="gnu.cpp.link.option.ldflags.1075667985" superClass="gnu.cpp.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/> <option id="gnu.cpp.link.option.ldflags.1075667985" superClass="gnu.cpp.link.option.ldflags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
<option id="gnu.cpp.link.option.flags.729510250" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-specs=nosys.specs -specs=nano.specs" valueType="string"/>
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.998064398" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input"> <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.998064398" 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)"/>
@ -203,11 +212,38 @@
</tool> </tool>
</toolChain> </toolChain>
</folderInfo> </folderInfo>
<folderInfo id="fr.ac6.managedbuild.config.gnu.cross.exe.release.1877724849.2134740968" name="/" resourcePath="App">
<toolChain id="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release.1992739119" name="Ac6 STM32 MCU GCC" superClass="fr.ac6.managedbuild.toolchain.gnu.cross.exe.release" unusedChildren="">
<option id="fr.ac6.managedbuild.option.gnu.cross.prefix.1045407890.275985949" name="Prefix" superClass="fr.ac6.managedbuild.option.gnu.cross.prefix.1045407890"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.mcu.925476639.1830020418" name="Mcu" superClass="fr.ac6.managedbuild.option.gnu.cross.mcu.925476639"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.board.1256163597.620352145" name="Board" superClass="fr.ac6.managedbuild.option.gnu.cross.board.1256163597"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.instructionSet.887333743.186453111" name="Instruction Set" superClass="fr.ac6.managedbuild.option.gnu.cross.instructionSet.887333743"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.fpu.1119905752.873051934" name="Floating point hardware" superClass="fr.ac6.managedbuild.option.gnu.cross.fpu.1119905752"/>
<option id="fr.ac6.managedbuild.option.gnu.cross.floatabi.1951111972.558146615" name="Floating-point ABI" superClass="fr.ac6.managedbuild.option.gnu.cross.floatabi.1951111972"/>
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="fr.ac6.managedbuild.targetPlatform.gnu.cross" isAbstract="false" osList="all" superClass="fr.ac6.managedbuild.targetPlatform.gnu.cross"/>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.432412907" name="MCU GCC Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1812350341">
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.2029667711" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s.492307537" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.s"/>
</tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.229921182" name="MCU G++ Compiler" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1717375477">
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1904609789" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s.474455887" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.s"/>
</tool>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.c.linker.2124268199" name="MCU GCC Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.c.linker.446073731"/>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.577894014" name="MCU G++ Linker" superClass="fr.ac6.managedbuild.tool.gnu.cross.cpp.linker.151905399"/>
<tool id="fr.ac6.managedbuild.tool.gnu.archiver.1821765616" name="MCU GCC Archiver" superClass="fr.ac6.managedbuild.tool.gnu.archiver.451086240"/>
<tool id="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release.15589146" name="MCU GCC Assembler" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.exe.release.1428365272">
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.365412611" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
<inputType id="fr.ac6.managedbuild.tool.gnu.cross.assembler.input.1739854860" superClass="fr.ac6.managedbuild.tool.gnu.cross.assembler.input"/>
</tool>
</toolChain>
</folderInfo>
<sourceEntries> <sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup" /> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="App"/>
<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="Inc"/> <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Inc"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Src"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="startup"/>
</sourceEntries> </sourceEntries>
</configuration> </configuration>
</storageModule> </storageModule>
@ -217,18 +253,27 @@
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> <storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="NeoPixelF103MVP.fr.ac6.managedbuild.target.gnu.cross.exe.212164267" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/> <project id="NeoPixelF103MVP.fr.ac6.managedbuild.target.gnu.cross.exe.212164267" name="Executable" projectType="fr.ac6.managedbuild.target.gnu.cross.exe"/>
</storageModule> </storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug">
<resource resourceType="PROJECT" workspacePath="/NeoPixelF103MVP"/>
</configuration>
<configuration configurationName="Release"/>
</storageModule>
<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.debug.2038470026;fr.ac6.managedbuild.config.gnu.cross.exe.debug.2038470026.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1812350341;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.62084941"> <scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.2038470026;fr.ac6.managedbuild.config.gnu.cross.exe.debug.2038470026.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1812350341;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.62084941">
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/> <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo> </scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.debug.2038470026;fr.ac6.managedbuild.config.gnu.cross.exe.debug.2038470026.;fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1717375477;fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1264884591">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.release.1877724849;fr.ac6.managedbuild.config.gnu.cross.exe.release.1877724849.;fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.1717375477;fr.ac6.managedbuild.tool.gnu.cross.cpp.compiler.input.cpp.1264884591">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="fr.ac6.managedbuild.config.gnu.cross.exe.release.1877724849;fr.ac6.managedbuild.config.gnu.cross.exe.release.1877724849.;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.1812350341;fr.ac6.managedbuild.tool.gnu.cross.c.compiler.input.c.62084941">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule> </storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders" />
<storageModule moduleId="refreshScope" versionNumber="2">
<configuration configurationName="Debug">
<resource resourceType="PROJECT" workspacePath="NeoPixelF103MVP" />
</configuration>
<configuration configurationName="Release" />
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets" />
</cproject> </cproject>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<projectDescription> <projectDescription>
<name>NeoPixelF103MVP</name> <name>NeoPixelF103MVP</name>
<comment /> <comment></comment>
<projects> <projects>
</projects> </projects>
<buildSpec> <buildSpec>
@ -23,8 +23,6 @@
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>fr.ac6.mcu.ide.core.MCUProjectNature</nature> <nature>fr.ac6.mcu.ide.core.MCUProjectNature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
</natures> </natures>
<linkedResources>
</linkedResources>
</projectDescription> </projectDescription>

68
App/App.cpp Normal file
View file

@ -0,0 +1,68 @@
/*
* App.cpp
*
* Created on: Dec 16, 2018
* Author: abody
*/
#include "main.h"
#include "stm32f1xx_hal.h"
#include "dma.h"
#include "spi.h"
#include "gpio.h"
#include <string.h>
#include "App/Pixel.h"
#include "App/LedBuffers.h"
void convert(uint8_t *src, uint8_t *dst, uint16_t size)
{
static uint8_t const bits[4] = { 0b10001000, 0b10001110, 0b11101000, 0b11101110 };
while(size--) {
uint8_t byte=*src++;
uint8_t duo = 3;
do {
uint8_t mask = 3 << (duo<<1);
*dst++ = bits[(byte & (mask))>>(duo<<1)];
} while(duo--);
}
}
extern "C" void App()
{
#define BRIGHTNESS 4
#define DELAY 10
g_ledBits[sizeof(g_ledBits)-1] = 0;
memset(g_pixels, 0, sizeof(g_pixels));
while(1)
{
for(uint16_t idx=0; idx < NUMPIXELS; idx++)
{
if(idx % 3 == 0) g_pixels[idx].r = BRIGHTNESS;
else if(idx % 3 == 1) g_pixels[idx].g = BRIGHTNESS;
else g_pixels[idx].b = BRIGHTNESS;
convert((uint8_t*)g_pixels, g_ledBits, sizeof(g_pixels));
HAL_SPI_Transmit_DMA(&hspi1, g_ledBits, sizeof(g_ledBits));
while(!g_done);
HAL_Delay(DELAY);
}
for(uint16_t idx=0; idx < NUMPIXELS; idx++)
{
if(idx % 3 == 0) g_pixels[idx].r = 0;
else if(idx % 3 == 1) g_pixels[idx].g = 0;
else g_pixels[idx].b = 0;
convert((uint8_t*)g_pixels, g_ledBits, sizeof(g_pixels));
HAL_SPI_Transmit_DMA(&hspi1, g_ledBits, sizeof(g_ledBits));
while(!g_done);
HAL_Delay(DELAY);
}
}
}

13
App/LedBuffers.c Normal file
View file

@ -0,0 +1,13 @@
/*
* LedBuffers.c
*
* Created on: Dec 16, 2018
* Author: abody
*/
#include "LedBuffers.h"
Pixel_t g_pixels[NUMPIXELS];
uint8_t g_ledBits[sizeof(g_pixels) * 8 / 2 + 1];

26
App/LedBuffers.h Normal file
View file

@ -0,0 +1,26 @@
/*
* LedBuffers.h
*
* Created on: Dec 16, 2018
* Author: abody
*/
#ifndef LEDBUFFERS_H_
#define LEDBUFFERS_H_
#include "Pixel.h"
#define NUMPIXELS 144
#ifdef __cplusplus
extern "C" {
#endif
extern Pixel_t g_pixels[NUMPIXELS];
uint8_t g_ledBits[sizeof(g_pixels) * 8 / 2 + 1];
#ifdef __cplusplus
}
#endif
#endif /* LEDBUFFERS_H_ */

27
App/Pixel.h Normal file
View file

@ -0,0 +1,27 @@
/*
* Pixel.h
*
* Created on: Dec 16, 2018
* Author: abody
*/
#ifndef PIXEL_H_
#define PIXEL_H_
#include <inttypes.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
uint8_t g;
uint8_t r;
uint8_t b;
} Pixel_t;
#ifdef __cplusplus
}
#endif
#endif /* PIXEL_H_ */

49
App/Sparkle.cpp Normal file
View file

@ -0,0 +1,49 @@
/*
* Sparkle.cpp
*
* Created on: Dec 16, 2018
* Author: abody
*/
#include "Sparkle.h"
Sparkle::Sparkle()
{
}
Sparkle::~Sparkle() {
}
void Sparkle::Start(Pixel_t *target, Pixel_t color, Pixel_t fadeSpeed)
{
m_target = target;
*target = color;
m_fadeSpeed = fadeSpeed;
}
bool Sparkle::Step()
{
Pixel_t current = *m_target;
uint8_t remaining = 3;
if(current.b > m_fadeSpeed.r )current.r -= m_fadeSpeed.r;
else {
current.b = 0;
--remaining;
}
if(current.g > m_fadeSpeed.g )current.g -= m_fadeSpeed.g;
else {
current.g = 0;
--remaining;
}
if(current.b > m_fadeSpeed.b )current.b -= m_fadeSpeed.b;
else {
current.b = 0;
--remaining;
}
return remaining != 0;
}

26
App/Sparkle.h Normal file
View file

@ -0,0 +1,26 @@
/*
* Sparkle.h
*
* Created on: Dec 16, 2018
* Author: abody
*/
#ifndef SPARKLE_H_
#define SPARKLE_H_
#include <inttypes.h>
#include "Pixel.h"
class Sparkle {
public:
Sparkle();
~Sparkle();
void Start(Pixel_t *target, Pixel_t color, Pixel_t fadeSpeed);
bool Step();
operator Pixel_t*() { return m_target; }
private:
Pixel_t *m_target = nullptr;
Pixel_t m_fadeSpeed = {1, 1, 1};
};
#endif /* SPARKLE_H_ */

View file

@ -58,7 +58,14 @@
/* #define USE_FULL_ASSERT 1U */ /* #define USE_FULL_ASSERT 1U */
/* USER CODE BEGIN Private defines */ /* USER CODE BEGIN Private defines */
#ifdef __cplusplus
extern "C" {
#endif
extern volatile uint8_t g_done; extern volatile uint8_t g_done;
#ifdef __cplusplus
}
#endif
/* USER CODE END Private defines */ /* USER CODE END Private defines */
#ifdef __cplusplus #ifdef __cplusplus

View file

@ -45,21 +45,18 @@
/* USER CODE BEGIN Includes */ /* USER CODE BEGIN Includes */
#include <string.h> #include <string.h>
#include "App/Pixel.h"
#include "App/LedBuffers.h"
/* USER CODE END Includes */ /* USER CODE END Includes */
/* Private variables ---------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */ /* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/
#define NUMPIXELS 144
volatile uint8_t g_done = 0; volatile uint8_t g_done = 0;
typedef struct {
uint8_t g;
uint8_t r;
uint8_t b;
} pixel_t;
pixel_t g_pixels[NUMPIXELS];
uint8_t g_ledBits[sizeof(g_pixels) * 8 / 2 + 1];
/* USER CODE END PV */ /* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
@ -67,23 +64,10 @@ void SystemClock_Config(void);
/* USER CODE BEGIN PFP */ /* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/ /* Private function prototypes -----------------------------------------------*/
void App();
/* USER CODE END PFP */ /* USER CODE END PFP */
/* USER CODE BEGIN 0 */ /* USER CODE BEGIN 0 */
void convert(uint8_t *src, uint8_t *dst, uint16_t size)
{
static uint8_t const bits[4] = { 0b10001000, 0b10001110, 0b11101000, 0b11101110 };
while(size--) {
uint8_t byte=*src++;
uint8_t duo = 3;
do {
uint8_t mask = 3 << (duo<<1);
*dst++ = bits[(byte & (mask))>>(duo<<1)];
} while(duo--);
}
}
/* USER CODE END 0 */ /* USER CODE END 0 */
@ -124,41 +108,8 @@ int main(void)
/* Infinite loop */ /* Infinite loop */
/* USER CODE BEGIN WHILE */ /* USER CODE BEGIN WHILE */
while(1) {
#define BRIGHTNESS 2 App();
#define DELAY 10
g_ledBits[sizeof(g_ledBits)-1] = 0;
memset(g_pixels, 0, sizeof(g_pixels));
while(1)
{
for(uint16_t idx=0; idx < NUMPIXELS; idx++)
{
if(idx % 3 == 0) g_pixels[idx].r = BRIGHTNESS;
else if(idx % 3 == 1) g_pixels[idx].g = BRIGHTNESS;
else g_pixels[idx].b = BRIGHTNESS;
convert((uint8_t*)g_pixels, g_ledBits, sizeof(g_pixels));
HAL_SPI_Transmit_DMA(&hspi1, g_ledBits, sizeof(g_ledBits));
while(!g_done);
HAL_Delay(DELAY);
}
for(uint16_t idx=0; idx < NUMPIXELS; idx++)
{
if(idx % 3 == 0) g_pixels[idx].r = 0;
else if(idx % 3 == 1) g_pixels[idx].g = 0;
else g_pixels[idx].b = 0;
convert((uint8_t*)g_pixels, g_ledBits, sizeof(g_pixels));
HAL_SPI_Transmit_DMA(&hspi1, g_ledBits, sizeof(g_ledBits));
while(!g_done);
HAL_Delay(DELAY);
}
/* USER CODE END WHILE */ /* USER CODE END WHILE */
/* USER CODE BEGIN 3 */ /* USER CODE BEGIN 3 */