discard previous trial, tried display with internal frame buffer
This commit is contained in:
parent
c30b708f92
commit
7e4ce4a1cd
@ -1 +1 @@
|
|||||||
Subproject commit 624533a150f7256a011a23ce93407e9123ce12fb
|
Subproject commit b15be55d65b357b8fe436e5c51fd7f6cef9aa4df
|
@ -1,428 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.settings">
|
|
||||||
<cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1019471104">
|
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1019471104" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
|
||||||
<externalSettings/>
|
|
||||||
<extensions>
|
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
</extensions>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
|
||||||
<configuration 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="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1019471104" name="Debug" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug">
|
|
||||||
<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1019471104." name="/" resourcePath="">
|
|
||||||
<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.314205154" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.624342118" name="MCU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="true" value="STM32H7A3ZITx" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1864550775" name="CPU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" useByScannerDiscovery="false" value="0" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.1279354973" name="Core" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" useByScannerDiscovery="false" value="0" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.685042526" name="Floating-point unit" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.1932006091" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.612730593" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.930886231" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.5 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32H7A3ZITx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | ../Drivers/STM32H7xx_HAL_Driver/Inc | ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy | ../Drivers/CMSIS/Device/ST/STM32H7xx/Include | ../Drivers/CMSIS/Include || || || USE_HAL_DRIVER | STM32H7A3xx || || Drivers | TouchGFX | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32H7A3ZITX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || " valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.1325811784" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" value="160" valueType="string"/>
|
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.171632668" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
|
|
||||||
<builder buildPath="${workspace_loc:/FT23_Charger}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1989729598" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.2129485109" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.476282109" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g3" valueType="enumerated"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.definedsymbols.2077784331" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.definedsymbols" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="DEBUG"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.2122011664" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1842472514" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.2117423242" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.316763308" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.641525982" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="DEBUG"/>
|
|
||||||
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
|
|
||||||
<listOptionValue builtIn="false" value="STM32H7A3xx"/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.5720181" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value="../Core/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32H7xx/Include"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1436783021" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1049525225" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1850863078" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.626221139" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.2053082096" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value="../Core/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32H7xx/Include"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.1441147122" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="DEBUG"/>
|
|
||||||
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
|
|
||||||
<listOptionValue builtIn="false" value="STM32H7A3xx"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.300225051" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.852065719" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.2002743647" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32H7A3ZITX_FLASH.ld}" valueType="string"/>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.1843347005" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
|
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
|
||||||
</inputType>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1073595632" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls.632572484" name="System calls" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.systemcalls.value.minimalimplementation" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.524193116" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32H7A3ZITX_FLASH.ld}" valueType="string"/>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.746926948" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
|
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
|
||||||
</inputType>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1348689912" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1933921011" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.797937803" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.518961585" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.69530490" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1459990745" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.691980605" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.2017908036" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
|
|
||||||
</toolChain>
|
|
||||||
</folderInfo>
|
|
||||||
<sourceEntries>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="TouchGFX"/>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
|
|
||||||
</sourceEntries>
|
|
||||||
</configuration>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
|
||||||
</cconfiguration>
|
|
||||||
<cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1754405407">
|
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1754405407" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
|
||||||
<externalSettings/>
|
|
||||||
<extensions>
|
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
</extensions>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
|
||||||
<configuration 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="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1754405407" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release">
|
|
||||||
<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1754405407." name="/" resourcePath="">
|
|
||||||
<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.2025261290" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1799031493" name="MCU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" useByScannerDiscovery="true" value="STM32H7A3ZITx" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1113661788" name="CPU" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" useByScannerDiscovery="false" value="0" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.552192317" name="Core" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" useByScannerDiscovery="false" value="0" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.586361029" name="Floating-point unit" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.1358899097" name="Floating-point ABI" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" useByScannerDiscovery="true" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.755869046" name="Board" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" useByScannerDiscovery="false" value="genericBoard" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.615804385" name="Defaults" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" useByScannerDiscovery="false" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.5 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32H7A3ZITx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Core/Inc | ../Drivers/STM32H7xx_HAL_Driver/Inc | ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy | ../Drivers/CMSIS/Device/ST/STM32H7xx/Include | ../Drivers/CMSIS/Include || || || USE_HAL_DRIVER | STM32H7A3xx || || Drivers | TouchGFX | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32H7A3ZITX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || " valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.debug.option.cpuclock.517467907" superClass="com.st.stm32cube.ide.mcu.debug.option.cpuclock" value="160" valueType="string"/>
|
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.95688683" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
|
|
||||||
<builder buildPath="${workspace_loc:/FT23_Charger}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1881403226" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1545491305" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.1646537037" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g0" valueType="enumerated"/>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.797913205" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1695370746" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.512007324" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1651350964" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.os" valueType="enumerated"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.2005572953" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
|
|
||||||
<listOptionValue builtIn="false" value="STM32H7A3xx"/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.1711631593" name="Include paths (-I)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value="../Core/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32H7xx/Include"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1147706762" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1366833761" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1827669430" name="Debug level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.996724636" name="Optimization level" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.value.os" valueType="enumerated"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.357604360" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value="../Core/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32H7xx/Include"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.412887567" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
|
|
||||||
<listOptionValue builtIn="false" value="STM32H7A3xx"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1385972626" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.2058018489" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.1390373864" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32H7A3ZITX_FLASH.ld}" valueType="string"/>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input.918644362" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.input">
|
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
|
||||||
</inputType>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1249443611" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls.1083290680" name="System calls" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.systemcalls" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.systemcalls.value.minimalimplementation" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.1172132702" name="Linker Script (-T)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32H7A3ZITX_FLASH.ld}" valueType="string"/>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.1560760330" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
|
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
|
||||||
</inputType>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1319652886" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1888853867" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1354437850" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.2127050854" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.404150502" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1995143162" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1472970695" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1522789150" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
|
|
||||||
</toolChain>
|
|
||||||
</folderInfo>
|
|
||||||
<sourceEntries>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="TouchGFX"/>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
|
|
||||||
</sourceEntries>
|
|
||||||
</configuration>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
|
||||||
</cconfiguration>
|
|
||||||
<cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.119293318">
|
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.119293318" moduleId="org.eclipse.cdt.core.settings" name="Debug">
|
|
||||||
<externalSettings/>
|
|
||||||
<extensions>
|
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
</extensions>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
|
||||||
<configuration 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="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.119293318" name="Debug" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug">
|
|
||||||
<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.119293318." name="/" resourcePath="">
|
|
||||||
<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.326852413" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1087588371" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" value="STM32H7A3ZITx" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1638038805" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" value="0" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.1955753028" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" value="0" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.690908175" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.937076308" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.126480484" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" value="genericBoard" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.413588610" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32H7A3ZITx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../TouchGFX/App | ../TouchGFX/target/generated | ../TouchGFX/target | ../Core/Inc | ../Drivers/STM32H7xx_HAL_Driver/Inc | ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy | ../Drivers/CMSIS/Device/ST/STM32H7xx/Include | ../Drivers/CMSIS/Include || || || USE_PWR_LDO_SUPPLY | USE_HAL_DRIVER | STM32H7A3xx || || Drivers | TouchGFX | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32H7A3ZITX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || || || " valueType="string"/>
|
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1298567352" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
|
|
||||||
<builder buildPath="${workspace_loc:/FT23_Charger}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1649068261" managedBuildOn="true" name="Gnu Make Builder.Debug" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.314880977" name="MCU/MPU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.1232851407" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g3" valueType="enumerated"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.definedsymbols.802658958" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.definedsymbols" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="DEBUG"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.1258942275" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.385795865" name="MCU/MPU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.1922181544" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.361783401" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.2059883372" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="DEBUG"/>
|
|
||||||
<listOptionValue builtIn="false" value="USE_PWR_LDO_SUPPLY"/>
|
|
||||||
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
|
|
||||||
<listOptionValue builtIn="false" value="STM32H7A3xx"/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.2021795514" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/App"/>
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/target/generated"/>
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/target"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Core/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32H7xx/Include"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.454401833" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.70616987" name="MCU/MPU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1615791924" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.1594573614" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.535469981" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="DEBUG"/>
|
|
||||||
<listOptionValue builtIn="false" value="USE_PWR_LDO_SUPPLY"/>
|
|
||||||
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
|
|
||||||
<listOptionValue builtIn="false" value="STM32H7A3xx"/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.244056925" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/App"/>
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/target/generated"/>
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/target"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Core/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32H7xx/Include"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.710568001" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1161991179" name="MCU/MPU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.519764852" name="MCU/MPU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.1047321934" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32H7A3ZITX_FLASH.ld}" valueType="string"/>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.67962653" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
|
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
|
||||||
</inputType>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1708663269" name="MCU/MPU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1400639808" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1018625267" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1313416860" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1038598778" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1744143726" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.733450087" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.407614843" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
|
|
||||||
</toolChain>
|
|
||||||
</folderInfo>
|
|
||||||
<sourceEntries>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="TouchGFX"/>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
|
|
||||||
</sourceEntries>
|
|
||||||
</configuration>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
|
||||||
</cconfiguration>
|
|
||||||
<cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.756190527">
|
|
||||||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.756190527" moduleId="org.eclipse.cdt.core.settings" name="Release">
|
|
||||||
<externalSettings/>
|
|
||||||
<extensions>
|
|
||||||
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
|
|
||||||
</extensions>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
|
||||||
<configuration 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="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.756190527" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release">
|
|
||||||
<folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.756190527." name="/" resourcePath="">
|
|
||||||
<toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.1083625657" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.583495346" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" value="STM32H7A3ZITx" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1733420348" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" value="0" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.1466550571" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" value="0" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.1870091746" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.201935015" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1748517134" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" value="genericBoard" valueType="string"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.263569957" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.6 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.option.toolchain.value.workspace || STM32H7A3ZITx || 0 || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../TouchGFX/App | ../TouchGFX/target/generated | ../TouchGFX/target | ../Core/Inc | ../Drivers/STM32H7xx_HAL_Driver/Inc | ../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy | ../Drivers/CMSIS/Device/ST/STM32H7xx/Include | ../Drivers/CMSIS/Include || || || USE_PWR_LDO_SUPPLY | USE_HAL_DRIVER | STM32H7A3xx || || Drivers | TouchGFX | Core/Startup | Core || || || ${workspace_loc:/${ProjName}/STM32H7A3ZITX_FLASH.ld} || true || NonSecure || || secure_nsclib.o || || None || || || " valueType="string"/>
|
|
||||||
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.1592686723" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
|
|
||||||
<builder buildPath="${workspace_loc:/FT23_Charger}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1307658396" managedBuildOn="true" name="Gnu Make Builder.Release" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1453126020" name="MCU/MPU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.1781860691" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g0" valueType="enumerated"/>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.437573918" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1300504895" name="MCU/MPU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.789351909" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.608611178" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.os" valueType="enumerated"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.1672571510" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="USE_PWR_LDO_SUPPLY"/>
|
|
||||||
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
|
|
||||||
<listOptionValue builtIn="false" value="STM32H7A3xx"/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.1772842668" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/App"/>
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/target/generated"/>
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/target"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Core/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32H7xx/Include"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1732580469" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.24031397" name="MCU/MPU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1473783194" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.1006475521" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.value.os" valueType="enumerated"/>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.466765335" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" valueType="definedSymbols">
|
|
||||||
<listOptionValue builtIn="false" value="USE_PWR_LDO_SUPPLY"/>
|
|
||||||
<listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
|
|
||||||
<listOptionValue builtIn="false" value="STM32H7A3xx"/>
|
|
||||||
</option>
|
|
||||||
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.520130676" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" valueType="includePath">
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/App"/>
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/target/generated"/>
|
|
||||||
<listOptionValue builtIn="false" value="../TouchGFX/target"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Core/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/STM32H7xx_HAL_Driver/Inc/Legacy"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32H7xx/Include"/>
|
|
||||||
<listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
|
|
||||||
</option>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.310016555" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.333736593" name="MCU/MPU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.83121710" name="MCU/MPU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
|
|
||||||
<option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.1940167740" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32H7A3ZITX_FLASH.ld}" valueType="string"/>
|
|
||||||
<inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.811691742" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
|
|
||||||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
|
|
||||||
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
|
|
||||||
</inputType>
|
|
||||||
</tool>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.392123845" name="MCU/MPU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1910731775" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.568364691" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1828001244" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.699463840" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.915325049" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.97928403" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
|
|
||||||
<tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1890484734" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
|
|
||||||
</toolChain>
|
|
||||||
</folderInfo>
|
|
||||||
<sourceEntries>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="TouchGFX"/>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Core"/>
|
|
||||||
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="Drivers"/>
|
|
||||||
</sourceEntries>
|
|
||||||
</configuration>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
|
|
||||||
</cconfiguration>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.pathentry"/>
|
|
||||||
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
|
|
||||||
<project id="FT23_Charger.null.1416459501" name="FT23_Charger"/>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
|
|
||||||
<storageModule moduleId="refreshScope" versionNumber="2">
|
|
||||||
<configuration configurationName="Debug">
|
|
||||||
<resource resourceType="PROJECT" workspacePath="/FT23_Charger"/>
|
|
||||||
</configuration>
|
|
||||||
<configuration configurationName="Release">
|
|
||||||
<resource resourceType="PROJECT" workspacePath="/FT23_Charger"/>
|
|
||||||
</configuration>
|
|
||||||
</storageModule>
|
|
||||||
<storageModule moduleId="scannerConfiguration">
|
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
<scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1754405407;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1754405407.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1695370746;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1147706762">
|
|
||||||
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
<scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1019471104;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1019471104.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1842472514;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1436783021">
|
|
||||||
<autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
<scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1754405407;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1754405407.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1366833761;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1385972626">
|
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
<scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1019471104;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1019471104.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1049525225;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.300225051">
|
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
|
|
||||||
</scannerConfigBuildInfo>
|
|
||||||
</storageModule>
|
|
||||||
</cproject>
|
|
File diff suppressed because one or more lines are too long
@ -1,33 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>FT23_Charger</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
|
|
||||||
<triggers>clean,full,incremental,</triggers>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
|
|
||||||
<triggers>full,incremental,</triggers>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>com.st.stm32cube.ide.mcu.MCUProjectNature</nature>
|
|
||||||
<nature>com.st.stm32cube.ide.mcu.MCUCubeProjectNature</nature>
|
|
||||||
<nature>org.eclipse.cdt.core.cnature</nature>
|
|
||||||
<nature>com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature</nature>
|
|
||||||
<nature>com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature</nature>
|
|
||||||
<nature>com.st.stm32cube.ide.mcu.MCUSingleCpuProjectNature</nature>
|
|
||||||
<nature>com.st.stm32cube.ide.mcu.MCURootProjectNature</nature>
|
|
||||||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
|
|
||||||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
|
|
||||||
<nature>org.eclipse.cdt.core.ccnature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
7
Software/.stm32env
Normal file
7
Software/.stm32env
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# environment variable file used by stm32-for-vscode and the STM32Make.make makefile
|
||||||
|
# Other environment variables can be added here. If wanting to use the generated makefile in CI/CD context please
|
||||||
|
# configure the following variables: GCC_PATH, OPENOCD
|
||||||
|
|
||||||
|
ARM_GCC_PATH = /usr/bin
|
||||||
|
OPENOCD = /home/chiangni/.config/Code/User/globalStorage/bmd.stm32-for-vscode/@xpack-dev-tools/openocd/0.12.0-4.1/.content/bin/openocd
|
||||||
|
|
@ -1,43 +0,0 @@
|
|||||||
/*
|
|
||||||
* b_cccv_algo.h
|
|
||||||
*
|
|
||||||
* Created on: 16.06.2023
|
|
||||||
* Author: max
|
|
||||||
*/
|
|
||||||
#include <stdint.h>
|
|
||||||
#include "stm32h7xx_hal.h"
|
|
||||||
|
|
||||||
#ifndef INC_B_CCCV_ALGO_H_
|
|
||||||
#define INC_B_CCCV_ALGO_H_
|
|
||||||
|
|
||||||
#define I_GAIN 4
|
|
||||||
#define P_GAIN 10
|
|
||||||
#define CHARGE_CURRENT_LIMIT 10.0
|
|
||||||
#define SIMULINKTEST
|
|
||||||
#undef SIMULINKTEST
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum{
|
|
||||||
NO_CHARGING,
|
|
||||||
CHARGING_IN_PROGRESS,
|
|
||||||
CHARGING_COMPLETED
|
|
||||||
} CCCV_CONTROL_STATE;
|
|
||||||
|
|
||||||
#ifdef SIMULINKTEST
|
|
||||||
CCCV_CONTROL_STATE cccvloop(float maxcellvoltage, float voltagesetpoint, float maxcurrent, float*ccurrent);
|
|
||||||
#else
|
|
||||||
|
|
||||||
CCCV_CONTROL_STATE cccvloop(float maxcellvoltage, float voltagesetpoint, float maxcurrent);
|
|
||||||
void setchargecurrent(float chargecurrent);
|
|
||||||
void setchargevoltage(uint8_t numberofcells,float maximumcellvoltage);
|
|
||||||
float getMaximumCellVoltage();
|
|
||||||
void chargingloop(float maximumcellvoltage);
|
|
||||||
void startcharging(float endvoltage);
|
|
||||||
void initChargerAlgo(uint8_t numberofcells, float maximumcellvoltage);
|
|
||||||
void setchargevoltage(uint8_t numberofcells,float maximumcellvoltage);
|
|
||||||
void stopcharging();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
float matlabvalidationwrapper(float maxcellvoltage, float voltagesetpoint, float maxcurrent);
|
|
||||||
|
|
||||||
#endif /* INC_B_CCCV_ALGO_H_ */
|
|
@ -1,62 +0,0 @@
|
|||||||
#ifndef CAN_HALAL_H
|
|
||||||
#define CAN_HALAL_H
|
|
||||||
|
|
||||||
// Define family macros if none are defined and we recognize a chip macro
|
|
||||||
#if !defined(STM32F3) && !defined(STM32H7)
|
|
||||||
#if defined(STM32F302x6) || defined(STM32F302x8) || defined(STM32F302xB) || \
|
|
||||||
defined(STM32F302xC)
|
|
||||||
#define STM32F3
|
|
||||||
#endif
|
|
||||||
#if defined(STM32H7A3xx)
|
|
||||||
#define STM32H7
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(STM32F3)
|
|
||||||
#include "stm32f3xx_hal.h"
|
|
||||||
#define FTCAN_IS_BXCAN
|
|
||||||
#define FTCAN_NUM_FILTERS 13
|
|
||||||
#elif defined(STM32H7)
|
|
||||||
#include "stm32h7xx_hal.h"
|
|
||||||
#define FTCAN_IS_FDCAN
|
|
||||||
#define FTCAN_NUM_FILTERS 13
|
|
||||||
#else
|
|
||||||
#error "Couldn't detect STM family"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(FTCAN_IS_BXCAN)
|
|
||||||
HAL_StatusTypeDef ftcan_init(CAN_HandleTypeDef *handle);
|
|
||||||
#elif defined(FTCAN_IS_FDCAN)
|
|
||||||
HAL_StatusTypeDef ftcan_init(FDCAN_HandleTypeDef *handle);
|
|
||||||
#else
|
|
||||||
#error "Unknown CAN peripheral"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
HAL_StatusTypeDef ftcan_transmit(uint16_t id, const uint8_t *data,
|
|
||||||
size_t datalen);
|
|
||||||
|
|
||||||
HAL_StatusTypeDef ftcan_add_filter(uint16_t id, uint16_t mask);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Define this function to be notified of incoming CAN messages
|
|
||||||
*/
|
|
||||||
void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Read num_bytes bytes from a message (unmarshalled network byte order). The
|
|
||||||
* msg pointer is advanced by the corresponding number of bytes.
|
|
||||||
*
|
|
||||||
* Both methods return a 64-bit integer, but you can safely cast it to a smaller
|
|
||||||
* integer type.
|
|
||||||
*/
|
|
||||||
uint64_t ftcan_unmarshal_unsigned(const uint8_t **data, size_t num_bytes);
|
|
||||||
int64_t ftcan_unmarshal_signed(const uint8_t **data, size_t num_bytes);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Write num_bytes to a message (marshalled in network byte order). The pointer
|
|
||||||
* is advanced by the corresponding number of bytes and returned.
|
|
||||||
*/
|
|
||||||
uint8_t *ftcan_marshal_unsigned(uint8_t *data, uint64_t val, size_t num_bytes);
|
|
||||||
uint8_t *ftcan_marshal_signed(uint8_t *data, int64_t val, size_t num_bytes);
|
|
||||||
|
|
||||||
#endif // CAN_HALAL_H
|
|
@ -1,22 +0,0 @@
|
|||||||
/*
|
|
||||||
* can.h
|
|
||||||
*
|
|
||||||
* Created on: 21.06.2023
|
|
||||||
* Author: max
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef INC_CAN_H_
|
|
||||||
#define INC_CAN_H_
|
|
||||||
|
|
||||||
#include "stm32h7xx_hal.h"
|
|
||||||
|
|
||||||
#define CAN_ID_AMS_STATUS 0x00A
|
|
||||||
#define CAN_ID_AMS_IN 0x00B
|
|
||||||
#define CAN_ID_SLAVE_STATUS_BASE 0x080
|
|
||||||
#define CAN_ID_CHARGER_ACTIVE 0x200
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void initCan(FDCAN_HandleTypeDef *hcan);
|
|
||||||
|
|
||||||
#endif /* INC_CAN_H_ */
|
|
@ -1,17 +0,0 @@
|
|||||||
/*
|
|
||||||
* charge_ctrl_test_shell.h
|
|
||||||
*
|
|
||||||
* Created on: May 21, 2023
|
|
||||||
* Author: max
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef INC_CHARGE_CTRL_TEST_SHELL_H_
|
|
||||||
#define INC_CHARGE_CTRL_TEST_SHELL_H_
|
|
||||||
|
|
||||||
#include "stm32h7xx_hal.h"
|
|
||||||
|
|
||||||
void charge_shell_init(UART_HandleTypeDef *huart);
|
|
||||||
void charge_shell_loop();
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* INC_CHARGE_CTRL_TEST_SHELL_H_ */
|
|
@ -1,39 +0,0 @@
|
|||||||
/*
|
|
||||||
* charger_control.h
|
|
||||||
*
|
|
||||||
* Created on: May 21, 2023
|
|
||||||
* Author: MaxMax
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef INC_CHARGER_CONTROL_H_
|
|
||||||
#define INC_CHARGER_CONTROL_H_
|
|
||||||
|
|
||||||
#include "stm32h7xx_hal.h"
|
|
||||||
|
|
||||||
#define CURRENT_DAC_ADR 0x58
|
|
||||||
#define VOLTAGE_DAC_ADR 0x5E
|
|
||||||
#define CHARGER_ADC_ADR 0x90
|
|
||||||
|
|
||||||
typedef struct{
|
|
||||||
uint8_t acfail;
|
|
||||||
uint8_t dcfail;
|
|
||||||
uint8_t cc_status;
|
|
||||||
uint8_t ot_status;
|
|
||||||
uint8_t lim_status;
|
|
||||||
uint16_t voltage;
|
|
||||||
uint16_t current;
|
|
||||||
}ChargerStatusHandleTypeDef;
|
|
||||||
|
|
||||||
void charger_control_init(I2C_HandleTypeDef* hi2c);
|
|
||||||
|
|
||||||
ChargerStatusHandleTypeDef charger_control_get_state();
|
|
||||||
void charger_control_set_current(uint32_t current);
|
|
||||||
void charger_control_set_voltage(uint32_t voltage);
|
|
||||||
void charger_control_enable_charger_relay();
|
|
||||||
void charger_control_disable_charger_relay();
|
|
||||||
void charger_control_enable_remote();
|
|
||||||
void charger_control_disable_remote();
|
|
||||||
void charger_control_setup_DACs();
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* INC_CHARGER_CONTROL_H_ */
|
|
@ -7,13 +7,12 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2022 STMicroelectronics.
|
* Copyright (c) 2025 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software is licensed under terms that can be found in the LICENSE file
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* in the root directory of this software component.
|
||||||
* License. You may obtain a copy of the License at:
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||||
* opensource.org/licenses/BSD-3-Clause
|
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name :
|
|
||||||
* Description :
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
/* USER CODE END Header */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
@ -1,46 +0,0 @@
|
|||||||
/*
|
|
||||||
* slave_handler.h
|
|
||||||
*
|
|
||||||
* Created on: Jun 21, 2023
|
|
||||||
* Author: max
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef INC_SLAVE_HANDLER_H_
|
|
||||||
#define INC_SLAVE_HANDLER_H_
|
|
||||||
|
|
||||||
#include "stm32h7xx_hal.h"
|
|
||||||
|
|
||||||
#define N_SLAVES 6
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
SLAVE_ERR_NONE,
|
|
||||||
SLAVE_ERR_TIMEOUT,
|
|
||||||
SLAVE_ERR_OT,
|
|
||||||
SLAVE_ERR_UT,
|
|
||||||
SLAVE_ERR_OV,
|
|
||||||
SLAVE_ERR_UV,
|
|
||||||
SLAVE_ERR_UNKNOWN,
|
|
||||||
} SlaveErrorKind;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
SlaveErrorKind kind;
|
|
||||||
uint32_t data; // Cell/temperature ID etc
|
|
||||||
} SlaveError;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
uint8_t id;
|
|
||||||
SlaveError error;
|
|
||||||
uint8_t soc;
|
|
||||||
uint16_t min_voltage;
|
|
||||||
uint16_t max_voltage;
|
|
||||||
int16_t max_temp;
|
|
||||||
uint32_t last_message;
|
|
||||||
} SlaveHandle;
|
|
||||||
|
|
||||||
extern SlaveHandle slaves[N_SLAVES];
|
|
||||||
|
|
||||||
float slaves_get_maximum_voltage();
|
|
||||||
void slaves_handle_status(const uint8_t *data);
|
|
||||||
void slave_handler_init();
|
|
||||||
|
|
||||||
#endif /* INC_SLAVE_HANDLER_H_ */
|
|
@ -6,15 +6,14 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2022 STMicroelectronics.
|
* Copyright (c) 2025 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software is licensed under terms that can be found in the LICENSE file
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* in the root directory of this software component.
|
||||||
* License. You may obtain a copy of the License at:
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||||
* opensource.org/licenses/BSD-3-Clause
|
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
/* USER CODE END Header */
|
/* USER CODE END Header */
|
||||||
|
|
||||||
@ -61,7 +60,6 @@ void FDCAN1_IT1_IRQHandler(void);
|
|||||||
void FMC_IRQHandler(void);
|
void FMC_IRQHandler(void);
|
||||||
void FDCAN_CAL_IRQHandler(void);
|
void FDCAN_CAL_IRQHandler(void);
|
||||||
void LTDC_IRQHandler(void);
|
void LTDC_IRQHandler(void);
|
||||||
void LTDC_ER_IRQHandler(void);
|
|
||||||
/* USER CODE BEGIN EFP */
|
/* USER CODE BEGIN EFP */
|
||||||
|
|
||||||
/* USER CODE END EFP */
|
/* USER CODE END EFP */
|
||||||
|
@ -1,205 +0,0 @@
|
|||||||
/*
|
|
||||||
* b_cccv_algo.c
|
|
||||||
*
|
|
||||||
* Created on: 16.06.2023
|
|
||||||
* Author: max
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "b_cccv_algo.h"
|
|
||||||
#include "charger_control.h"
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
static uint32_t dt;
|
|
||||||
static uint32_t lasttick;
|
|
||||||
static float errorintegration = 0;
|
|
||||||
static float finalvoltage = 4.15;
|
|
||||||
static float chargevoltage = 430;
|
|
||||||
static float chargecurrentlimit = CHARGE_CURRENT_LIMIT;
|
|
||||||
|
|
||||||
static float resistancelut[1024];
|
|
||||||
static float voltageresistancelut[1024];
|
|
||||||
|
|
||||||
#define CURRENT_R 2.2
|
|
||||||
#define VOLTAGE_R 18
|
|
||||||
|
|
||||||
CCCV_CONTROL_STATE chargerstate = NO_CHARGING;
|
|
||||||
|
|
||||||
#ifdef SIMULINKTEST
|
|
||||||
CCCV_CONTROL_STATE cccvloop(float maxcellvoltage, float voltagesetpoint, float maxcurrent, float*ccurrent)
|
|
||||||
#else
|
|
||||||
CCCV_CONTROL_STATE cccvloop(float maxcellvoltage, float voltagesetpoint, float maxcurrent)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
{
|
|
||||||
#ifdef SIMULINKTEST
|
|
||||||
dt = 1000;
|
|
||||||
#else
|
|
||||||
dt = HAL_GetTick() - lasttick;
|
|
||||||
lasttick = HAL_GetTick();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
float chargecurrent = 0;
|
|
||||||
|
|
||||||
//Calculate Voltage Error and I and P Factors
|
|
||||||
float voltageerror = voltagesetpoint-maxcellvoltage;
|
|
||||||
|
|
||||||
float errorproportional = P_GAIN * voltageerror;
|
|
||||||
errorintegration += I_GAIN*voltageerror * ((float)dt)/1000;
|
|
||||||
|
|
||||||
|
|
||||||
//Limit I and P Factors to maximum charge current
|
|
||||||
|
|
||||||
if(errorintegration > maxcurrent)
|
|
||||||
errorintegration = maxcurrent;
|
|
||||||
|
|
||||||
if(errorproportional > maxcurrent)
|
|
||||||
errorproportional = maxcurrent;
|
|
||||||
|
|
||||||
if(errorproportional <= -maxcurrent)
|
|
||||||
errorproportional = -maxcurrent;
|
|
||||||
|
|
||||||
if(errorintegration <= -maxcurrent)
|
|
||||||
errorintegration = -maxcurrent;
|
|
||||||
|
|
||||||
float errorintegrationout = errorintegration;
|
|
||||||
chargecurrent = (errorproportional + errorintegrationout);
|
|
||||||
|
|
||||||
if(chargecurrent > maxcurrent)
|
|
||||||
chargecurrent = maxcurrent;
|
|
||||||
|
|
||||||
if(chargecurrent <= 0)
|
|
||||||
chargecurrent = 0;
|
|
||||||
|
|
||||||
if(chargecurrent < 0.01) //If Charge Current ist below minimum threshold, stop charging
|
|
||||||
return CHARGING_COMPLETED;
|
|
||||||
#ifdef SIMULINKTEST
|
|
||||||
*ccurrent = chargecurrent;
|
|
||||||
#else
|
|
||||||
setchargevoltage(103,finalvoltage+0.05);
|
|
||||||
setchargecurrent(chargecurrent);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
return CHARGING_IN_PROGRESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef SIMULINKTEST
|
|
||||||
|
|
||||||
void initChargerAlgo(uint8_t numberofcells, float maximumcellvoltage)
|
|
||||||
{
|
|
||||||
chargerstate = NO_CHARGING;
|
|
||||||
chargevoltage = numberofcells * maximumcellvoltage;
|
|
||||||
|
|
||||||
for(uint32_t i = 0; i < 1024; i++)
|
|
||||||
{
|
|
||||||
resistancelut[i] = 10*CURRENT_R/(CURRENT_R+(20*((float)i)/1024));
|
|
||||||
}
|
|
||||||
|
|
||||||
for(uint32_t i = 0; i < 1024; i++)
|
|
||||||
{
|
|
||||||
voltageresistancelut[i] = (600*VOLTAGE_R)/(VOLTAGE_R+(20*((float)i)/1024));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void setchargecurrent(float chargecurrent)
|
|
||||||
{
|
|
||||||
float targetresistance;
|
|
||||||
if(chargecurrent != 0)
|
|
||||||
{
|
|
||||||
for(uint32_t setpoint = 0; setpoint < 1024; setpoint++)
|
|
||||||
{
|
|
||||||
if(resistancelut[setpoint] <= chargecurrent)
|
|
||||||
{
|
|
||||||
targetresistance = (20000*((float)setpoint)/1024);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
targetresistance = 20000;
|
|
||||||
}
|
|
||||||
|
|
||||||
float wiperpos = targetresistance/20000 * (1023);
|
|
||||||
charger_control_set_current((uint32_t) wiperpos);
|
|
||||||
}
|
|
||||||
|
|
||||||
void setchargevoltage(uint8_t numberofcells,float maximumcellvoltage)
|
|
||||||
{
|
|
||||||
|
|
||||||
float chargevoltage = numberofcells * maximumcellvoltage;
|
|
||||||
float targetresistance;
|
|
||||||
|
|
||||||
if(chargevoltage != 0)
|
|
||||||
{
|
|
||||||
for(uint32_t setpoint = 0; setpoint < 1024; setpoint++)
|
|
||||||
{
|
|
||||||
if(voltageresistancelut[setpoint] <= chargevoltage)
|
|
||||||
{
|
|
||||||
targetresistance = (20000*((float)setpoint)/1024);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
targetresistance = 20000;
|
|
||||||
}
|
|
||||||
|
|
||||||
float wiperpos = targetresistance/20000 * (1023);
|
|
||||||
charger_control_set_voltage((uint32_t) wiperpos);
|
|
||||||
//@TODO Call Function to set Resistance for Voltage
|
|
||||||
}
|
|
||||||
|
|
||||||
void chargingloop(float maximumcellvoltage)
|
|
||||||
{
|
|
||||||
switch(chargerstate)
|
|
||||||
{
|
|
||||||
case NO_CHARGING: //Do Nothing IDLE Loop
|
|
||||||
chargerstate = NO_CHARGING;
|
|
||||||
charger_control_disable_remote();
|
|
||||||
errorintegration = 0;
|
|
||||||
break;
|
|
||||||
case CHARGING_IN_PROGRESS: //Run charging algo periodically
|
|
||||||
charger_control_enable_remote();
|
|
||||||
chargerstate = cccvloop(maximumcellvoltage, finalvoltage, chargecurrentlimit);
|
|
||||||
break;
|
|
||||||
case CHARGING_COMPLETED: //Signal Completion of Charging here
|
|
||||||
chargerstate = NO_CHARGING;
|
|
||||||
charger_control_disable_remote();
|
|
||||||
errorintegration = 0;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void startcharging(float endvoltage)
|
|
||||||
{
|
|
||||||
chargerstate = CHARGING_IN_PROGRESS;
|
|
||||||
finalvoltage = endvoltage;
|
|
||||||
}
|
|
||||||
|
|
||||||
void stopcharging()
|
|
||||||
{
|
|
||||||
chargerstate = NO_CHARGING;
|
|
||||||
charger_control_disable_remote();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIMULINKTEST
|
|
||||||
|
|
||||||
float matlabvalidationwrapper(float maxcellvoltage, float voltagesetpoint, float maxcurrent)
|
|
||||||
{
|
|
||||||
float chargecurrent = 0;
|
|
||||||
(void*) cccvloop(maxcellvoltage,voltagesetpoint,maxcurrent, &chargecurrent);
|
|
||||||
return chargecurrent;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
@ -1,273 +0,0 @@
|
|||||||
#include "can-halal.h"
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if defined(FTCAN_IS_BXCAN)
|
|
||||||
static CAN_HandleTypeDef *hcan;
|
|
||||||
|
|
||||||
HAL_StatusTypeDef ftcan_init(CAN_HandleTypeDef *handle) {
|
|
||||||
hcan = handle;
|
|
||||||
|
|
||||||
HAL_StatusTypeDef status =
|
|
||||||
HAL_CAN_ActivateNotification(hcan, CAN_IT_RX_FIFO0_MSG_PENDING);
|
|
||||||
if (status != HAL_OK) {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
return HAL_CAN_Start(hcan);
|
|
||||||
}
|
|
||||||
|
|
||||||
HAL_StatusTypeDef ftcan_transmit(uint16_t id, const uint8_t *data,
|
|
||||||
size_t datalen) {
|
|
||||||
static CAN_TxHeaderTypeDef header;
|
|
||||||
header.StdId = id;
|
|
||||||
header.IDE = CAN_ID_STD;
|
|
||||||
header.RTR = CAN_RTR_DATA;
|
|
||||||
header.DLC = datalen;
|
|
||||||
uint32_t mailbox;
|
|
||||||
return HAL_CAN_AddTxMessage(hcan, &header, data, &mailbox);
|
|
||||||
}
|
|
||||||
|
|
||||||
HAL_StatusTypeDef ftcan_add_filter(uint16_t id, uint16_t mask) {
|
|
||||||
static uint32_t next_filter_no = 0;
|
|
||||||
static CAN_FilterTypeDef filter;
|
|
||||||
if (next_filter_no % 2 == 0) {
|
|
||||||
filter.FilterIdHigh = id << 5;
|
|
||||||
filter.FilterMaskIdHigh = mask << 5;
|
|
||||||
filter.FilterIdLow = id << 5;
|
|
||||||
filter.FilterMaskIdLow = mask << 5;
|
|
||||||
} else {
|
|
||||||
// Leave high filter untouched from the last configuration
|
|
||||||
filter.FilterIdLow = id << 5;
|
|
||||||
filter.FilterMaskIdLow = mask << 5;
|
|
||||||
}
|
|
||||||
filter.FilterFIFOAssignment = CAN_FILTER_FIFO0;
|
|
||||||
filter.FilterBank = next_filter_no / 2;
|
|
||||||
if (filter.FilterBank > FTCAN_NUM_FILTERS + 1) {
|
|
||||||
return HAL_ERROR;
|
|
||||||
}
|
|
||||||
filter.FilterMode = CAN_FILTERMODE_IDMASK;
|
|
||||||
filter.FilterScale = CAN_FILTERSCALE_16BIT;
|
|
||||||
filter.FilterActivation = CAN_FILTER_ENABLE;
|
|
||||||
|
|
||||||
// Disable slave filters
|
|
||||||
// TODO: Some STM32 have multiple CAN peripherals, and one uses the slave
|
|
||||||
// filter bank
|
|
||||||
filter.SlaveStartFilterBank = FTCAN_NUM_FILTERS;
|
|
||||||
|
|
||||||
HAL_StatusTypeDef status = HAL_CAN_ConfigFilter(hcan, &filter);
|
|
||||||
if (status == HAL_OK) {
|
|
||||||
next_filter_no++;
|
|
||||||
}
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *handle) {
|
|
||||||
if (handle != hcan) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
CAN_RxHeaderTypeDef header;
|
|
||||||
uint8_t data[8];
|
|
||||||
if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &header, data) != HAL_OK) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (header.IDE != CAN_ID_STD) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ftcan_msg_received_cb(header.StdId, header.DLC, data);
|
|
||||||
}
|
|
||||||
#elif defined(FTCAN_IS_FDCAN)
|
|
||||||
static FDCAN_HandleTypeDef *hcan;
|
|
||||||
|
|
||||||
HAL_StatusTypeDef ftcan_init(FDCAN_HandleTypeDef *handle) {
|
|
||||||
hcan = handle;
|
|
||||||
|
|
||||||
HAL_StatusTypeDef status =
|
|
||||||
HAL_FDCAN_ActivateNotification(hcan, FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0);
|
|
||||||
if (status != HAL_OK) {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
// Reject non-matching messages
|
|
||||||
status =
|
|
||||||
HAL_FDCAN_ConfigGlobalFilter(hcan, FDCAN_REJECT, FDCAN_REJECT,
|
|
||||||
FDCAN_REJECT_REMOTE, FDCAN_REJECT_REMOTE);
|
|
||||||
if (status != HAL_OK) {
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
return HAL_FDCAN_Start(hcan);
|
|
||||||
}
|
|
||||||
|
|
||||||
HAL_StatusTypeDef ftcan_transmit(uint16_t id, const uint8_t *data,
|
|
||||||
size_t datalen) {
|
|
||||||
static FDCAN_TxHeaderTypeDef header;
|
|
||||||
header.Identifier = id;
|
|
||||||
header.IdType = FDCAN_STANDARD_ID;
|
|
||||||
header.TxFrameType = FDCAN_DATA_FRAME;
|
|
||||||
switch (datalen) {
|
|
||||||
case 0:
|
|
||||||
header.DataLength = FDCAN_DLC_BYTES_0;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
header.DataLength = FDCAN_DLC_BYTES_1;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
header.DataLength = FDCAN_DLC_BYTES_2;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
header.DataLength = FDCAN_DLC_BYTES_3;
|
|
||||||
break;
|
|
||||||
case 4:
|
|
||||||
header.DataLength = FDCAN_DLC_BYTES_4;
|
|
||||||
break;
|
|
||||||
case 5:
|
|
||||||
header.DataLength = FDCAN_DLC_BYTES_5;
|
|
||||||
break;
|
|
||||||
case 6:
|
|
||||||
header.DataLength = FDCAN_DLC_BYTES_6;
|
|
||||||
break;
|
|
||||||
case 7:
|
|
||||||
header.DataLength = FDCAN_DLC_BYTES_7;
|
|
||||||
break;
|
|
||||||
case 8:
|
|
||||||
default:
|
|
||||||
header.DataLength = FDCAN_DLC_BYTES_8;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
header.ErrorStateIndicator = FDCAN_ESI_PASSIVE;
|
|
||||||
header.BitRateSwitch = FDCAN_BRS_OFF;
|
|
||||||
header.FDFormat = FDCAN_CLASSIC_CAN;
|
|
||||||
header.TxEventFifoControl = FDCAN_NO_TX_EVENTS;
|
|
||||||
|
|
||||||
// HAL_FDCAN_AddMessageToTxFifoQ doesn't modify the data, but it's not marked
|
|
||||||
// as const for some reason.
|
|
||||||
uint8_t *data_nonconst = (uint8_t *)data;
|
|
||||||
return HAL_FDCAN_AddMessageToTxFifoQ(hcan, &header, data_nonconst);
|
|
||||||
}
|
|
||||||
|
|
||||||
HAL_StatusTypeDef ftcan_add_filter(uint16_t id, uint16_t mask) {
|
|
||||||
static uint32_t next_filter_no = 0;
|
|
||||||
static FDCAN_FilterTypeDef filter;
|
|
||||||
filter.IdType = FDCAN_STANDARD_ID;
|
|
||||||
filter.FilterIndex = next_filter_no;
|
|
||||||
if (filter.FilterIndex > FTCAN_NUM_FILTERS + 1) {
|
|
||||||
return HAL_ERROR;
|
|
||||||
}
|
|
||||||
filter.FilterType = FDCAN_FILTER_MASK;
|
|
||||||
filter.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
|
|
||||||
filter.FilterID1 = id;
|
|
||||||
filter.FilterID2 = mask;
|
|
||||||
|
|
||||||
HAL_StatusTypeDef status = HAL_FDCAN_ConfigFilter(hcan, &filter);
|
|
||||||
if (status == HAL_OK) {
|
|
||||||
next_filter_no++;
|
|
||||||
}
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
|
|
||||||
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *handle,
|
|
||||||
uint32_t RxFifo0ITs) {
|
|
||||||
if (handle != hcan || (RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) == RESET) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
static FDCAN_RxHeaderTypeDef header;
|
|
||||||
static uint8_t data[8];
|
|
||||||
if (HAL_FDCAN_GetRxMessage(hcan, FDCAN_RX_FIFO0, &header, data) != HAL_OK) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (header.FDFormat != FDCAN_CLASSIC_CAN ||
|
|
||||||
header.RxFrameType != FDCAN_DATA_FRAME ||
|
|
||||||
header.IdType != FDCAN_STANDARD_ID) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t datalen;
|
|
||||||
switch (header.DataLength) {
|
|
||||||
case FDCAN_DLC_BYTES_0:
|
|
||||||
datalen = 0;
|
|
||||||
break;
|
|
||||||
case FDCAN_DLC_BYTES_1:
|
|
||||||
datalen = 1;
|
|
||||||
break;
|
|
||||||
case FDCAN_DLC_BYTES_2:
|
|
||||||
datalen = 2;
|
|
||||||
break;
|
|
||||||
case FDCAN_DLC_BYTES_3:
|
|
||||||
datalen = 3;
|
|
||||||
break;
|
|
||||||
case FDCAN_DLC_BYTES_4:
|
|
||||||
datalen = 4;
|
|
||||||
break;
|
|
||||||
case FDCAN_DLC_BYTES_5:
|
|
||||||
datalen = 5;
|
|
||||||
break;
|
|
||||||
case FDCAN_DLC_BYTES_6:
|
|
||||||
datalen = 6;
|
|
||||||
break;
|
|
||||||
case FDCAN_DLC_BYTES_7:
|
|
||||||
datalen = 7;
|
|
||||||
break;
|
|
||||||
case FDCAN_DLC_BYTES_8:
|
|
||||||
datalen = 8;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ftcan_msg_received_cb(header.Identifier, datalen, data);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
__weak void ftcan_msg_received_cb(uint16_t id, size_t datalen,
|
|
||||||
const uint8_t *data) {}
|
|
||||||
|
|
||||||
uint64_t ftcan_unmarshal_unsigned(const uint8_t **data_ptr, size_t num_bytes) {
|
|
||||||
if (num_bytes > 8) {
|
|
||||||
num_bytes = 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
const uint8_t *data = *data_ptr;
|
|
||||||
uint64_t result = 0;
|
|
||||||
for (size_t i = 0; i < num_bytes; i++) {
|
|
||||||
result <<= 8;
|
|
||||||
result |= data[i];
|
|
||||||
}
|
|
||||||
*data_ptr += num_bytes;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t ftcan_unmarshal_signed(const uint8_t **data_ptr, size_t num_bytes) {
|
|
||||||
if (num_bytes > 8) {
|
|
||||||
num_bytes = 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t result_unsigned = ftcan_unmarshal_unsigned(data_ptr, num_bytes);
|
|
||||||
// Sign extend by shifting left, then copying to a signed int and shifting
|
|
||||||
// back to the right
|
|
||||||
size_t diff_to_64 = 64 - num_bytes * 8;
|
|
||||||
result_unsigned <<= diff_to_64;
|
|
||||||
int64_t result;
|
|
||||||
memcpy(&result, &result_unsigned, 8);
|
|
||||||
return result >> diff_to_64;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t *ftcan_marshal_unsigned(uint8_t *data, uint64_t val, size_t num_bytes) {
|
|
||||||
if (num_bytes > 8) {
|
|
||||||
num_bytes = 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = num_bytes - 1; i >= 0; i--) {
|
|
||||||
data[i] = val & 0xFF;
|
|
||||||
val >>= 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
return data + num_bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t *ftcan_marshal_signed(uint8_t *data, int64_t val, size_t num_bytes) {
|
|
||||||
return ftcan_marshal_unsigned(data, val, num_bytes);
|
|
||||||
}
|
|
@ -1,57 +0,0 @@
|
|||||||
/*
|
|
||||||
* can.c
|
|
||||||
*
|
|
||||||
* Created on: 21.06.2023
|
|
||||||
* Author: max
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "can.h"
|
|
||||||
#include "can-halal.h"
|
|
||||||
#include "slave_handler.h"
|
|
||||||
#include "b_cccv_algo.h"
|
|
||||||
#include "charger_control.h"
|
|
||||||
|
|
||||||
|
|
||||||
void initCan(FDCAN_HandleTypeDef *hcan)
|
|
||||||
{
|
|
||||||
ftcan_init(hcan);
|
|
||||||
ftcan_add_filter(0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data)
|
|
||||||
{
|
|
||||||
if ((id & 0xFF0) == CAN_ID_SLAVE_STATUS_BASE) {
|
|
||||||
// slaves_handle_status(data);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*if (id == CAN_ID_CHARGER_ACTIVE)
|
|
||||||
{
|
|
||||||
if(data[0] == 1)
|
|
||||||
{
|
|
||||||
uint8_t* ptr = &data[1];
|
|
||||||
startcharging(((float) ftcan_unmarshal_unsigned(&ptr, 2))/10000);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
stopcharging();
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}*/
|
|
||||||
switch (id) {
|
|
||||||
case CAN_ID_AMS_STATUS: {
|
|
||||||
int sdc_closed = data[0] >> 7;
|
|
||||||
if (sdc_closed == 0) {
|
|
||||||
charger_control_disable_remote();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case CAN_ID_AMS_IN: {
|
|
||||||
int active = data[0] & 0x01;
|
|
||||||
if (active) {
|
|
||||||
charger_control_enable_remote();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,69 +0,0 @@
|
|||||||
/*
|
|
||||||
* charge_ctrl_test_shell.c
|
|
||||||
*
|
|
||||||
* Created on: May 21, 2023
|
|
||||||
* Author: max
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "charge_ctrl_test_shell.h"
|
|
||||||
#include "charger_control.h"
|
|
||||||
|
|
||||||
UART_HandleTypeDef *suart;
|
|
||||||
|
|
||||||
void charge_shell_init(UART_HandleTypeDef *huart)
|
|
||||||
{
|
|
||||||
suart = huart;
|
|
||||||
}
|
|
||||||
|
|
||||||
void charge_shell_loop()
|
|
||||||
{
|
|
||||||
uint8_t command[3];
|
|
||||||
HAL_StatusTypeDef status = HAL_UART_Receive(suart, command, 3, 100);
|
|
||||||
if(status == HAL_OK)
|
|
||||||
{
|
|
||||||
switch(command[0])
|
|
||||||
{
|
|
||||||
case 'r':
|
|
||||||
if(command[1] == 'c') //enable remote control
|
|
||||||
{
|
|
||||||
charger_control_enable_remote();
|
|
||||||
}
|
|
||||||
else if(command[1] == 'o') //disable remote control
|
|
||||||
{
|
|
||||||
charger_control_disable_remote();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'e':
|
|
||||||
if(command[1] == 'c')
|
|
||||||
{
|
|
||||||
charger_control_enable_charger_relay();
|
|
||||||
}
|
|
||||||
else if(command[1] == 'o')
|
|
||||||
{
|
|
||||||
charger_control_disable_charger_relay();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'v':
|
|
||||||
;uint16_t voltage = (command[1]<<8) | command[2];
|
|
||||||
charger_control_set_voltage(voltage);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'c':
|
|
||||||
;uint16_t current = (command[1]<<8 | command[2]);
|
|
||||||
charger_control_set_current(current);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 's':
|
|
||||||
;ChargerStatusHandleTypeDef charg = charger_control_get_state();
|
|
||||||
uint8_t txbuffer[9] = {charg.acfail, charg.dcfail, charg.cc_status,
|
|
||||||
charg.lim_status, charg.ot_status, (uint8_t)(charg.current>>8),
|
|
||||||
(uint8_t)charg.current&0xFF,(uint8_t)(charg.voltage>>8),
|
|
||||||
(uint8_t)charg.voltage&0xFF
|
|
||||||
};
|
|
||||||
HAL_UART_Transmit(suart, txbuffer, 9, 1000);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,168 +0,0 @@
|
|||||||
/*
|
|
||||||
* charger_control.c
|
|
||||||
*
|
|
||||||
* Created on: May 21, 2023
|
|
||||||
* Author: MaxMax
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "charger_control.h"
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
I2C_HandleTypeDef* charger_i2c;
|
|
||||||
|
|
||||||
|
|
||||||
/*** @brief Start ADC Conversion on Charger Current Channel and returns the result
|
|
||||||
* @note The ADC has a PGA leading to an input range of +-6.144 in twos complement. With single ended measurements, the range is 15 bit and
|
|
||||||
* Voltage = 6.144/(2^(15)-1)
|
|
||||||
* @note The charger maps a voltage range of 0-5V to the output current of 0-10A
|
|
||||||
* @retval ADC Conversion register value
|
|
||||||
*/
|
|
||||||
uint16_t readADCCurrent()
|
|
||||||
{
|
|
||||||
uint8_t writeconfigreg[3] = {0x01, 0xC1, 0xE3};
|
|
||||||
uint8_t readconfigreg[1] = {0x01};
|
|
||||||
uint8_t readconversionreg[1] = {0x00};
|
|
||||||
uint8_t configreg[2];
|
|
||||||
uint8_t conversionreg[2];
|
|
||||||
|
|
||||||
HAL_I2C_Master_Transmit(charger_i2c, CHARGER_ADC_ADR, writeconfigreg, 3, 1000); //Set Config Register and Start conversion
|
|
||||||
|
|
||||||
HAL_I2C_Master_Transmit(charger_i2c, CHARGER_ADC_ADR, readconfigreg, 1, 1000); //Read Back Config Reg to check for conversion completion
|
|
||||||
HAL_I2C_Master_Receive(charger_i2c, CHARGER_ADC_ADR, configreg, 2, 1000);
|
|
||||||
HAL_Delay(1);//@TODO Remove if ADC Works
|
|
||||||
HAL_I2C_Master_Transmit(charger_i2c, CHARGER_ADC_ADR, readconversionreg, 1, 1000); //Read Result from conversion register
|
|
||||||
HAL_I2C_Master_Receive(charger_i2c, CHARGER_ADC_ADR, conversionreg, 2, 1000);
|
|
||||||
|
|
||||||
return (uint16_t)(conversionreg[0]<<8 | conversionreg[1]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** @brief Start ADC Conversion on Charger Voltage Channel and returns the result
|
|
||||||
* @note The ADC has a PGA leading to an input range of +-6.144 in twos complement. With single ended measurements, the range is 15 bit and
|
|
||||||
* Voltage = 6.144/(2^(15)-1)
|
|
||||||
* @note The charger maps a voltage range of 0-5V to the output voltage range of 0-600V
|
|
||||||
* @retval ADC Conversion register value
|
|
||||||
*/
|
|
||||||
|
|
||||||
uint16_t readADCVoltage()
|
|
||||||
{
|
|
||||||
uint8_t writeconfigreg[3] = {0x01, 0xC1, 0xE3};
|
|
||||||
uint8_t readconfigreg[1] = {0x01};
|
|
||||||
uint8_t readconversionreg[1] = {0x00};
|
|
||||||
uint8_t configreg[2];
|
|
||||||
uint8_t conversionreg[2];
|
|
||||||
|
|
||||||
HAL_I2C_Master_Transmit(charger_i2c, CHARGER_ADC_ADR, writeconfigreg, 3, 1000); //Set Config Register and Start conversion
|
|
||||||
|
|
||||||
HAL_I2C_Master_Transmit(charger_i2c, CHARGER_ADC_ADR, readconfigreg, 1, 1000); //Read Back Config Reg to check for conversion completion
|
|
||||||
HAL_I2C_Master_Receive(charger_i2c, CHARGER_ADC_ADR, configreg, 2, 1000);
|
|
||||||
HAL_Delay(1);//@TODO Remove if ADC Works
|
|
||||||
HAL_I2C_Master_Transmit(charger_i2c, CHARGER_ADC_ADR, readconversionreg, 1, 1000); //Read Result from conversion register
|
|
||||||
HAL_I2C_Master_Receive(charger_i2c, CHARGER_ADC_ADR, conversionreg, 2, 1000);
|
|
||||||
|
|
||||||
return (uint16_t)(conversionreg[0]<<8 | conversionreg[1]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** @brief Initilization Routine of the charger
|
|
||||||
* @note initially all outputs are set to 0, remote control and charger relay are deactivated
|
|
||||||
* @param hi2c Handler to I2C struct for ADC and DAC communication
|
|
||||||
*/
|
|
||||||
void charger_control_init(I2C_HandleTypeDef* hi2c)
|
|
||||||
{
|
|
||||||
charger_i2c = hi2c;
|
|
||||||
|
|
||||||
charger_control_disable_remote();
|
|
||||||
charger_control_disable_charger_relay();
|
|
||||||
charger_control_setup_DACs();
|
|
||||||
charger_control_set_current(0);
|
|
||||||
charger_control_set_voltage(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** @brief Get State of voltage, current and error flags of the charger
|
|
||||||
* @retval Struct Containing charger information
|
|
||||||
*/
|
|
||||||
|
|
||||||
ChargerStatusHandleTypeDef charger_control_get_state()
|
|
||||||
{
|
|
||||||
ChargerStatusHandleTypeDef chargerstate;
|
|
||||||
chargerstate.voltage = readADCVoltage();
|
|
||||||
chargerstate.current = readADCCurrent();
|
|
||||||
chargerstate.acfail = HAL_GPIO_ReadPin(Charger_AC_Fail_GPIO_Port, Charger_AC_Fail_Pin);
|
|
||||||
chargerstate.dcfail = HAL_GPIO_ReadPin(Charger_DC_FAIL_GPIO_Port, Charger_DC_FAIL_Pin);
|
|
||||||
chargerstate.cc_status = HAL_GPIO_ReadPin(Charger_CC_Status_GPIO_Port, Charger_CC_Status_Pin);
|
|
||||||
chargerstate.lim_status = HAL_GPIO_ReadPin(Charger_LIM_GPIO_Port, Charger_LIM_Pin);
|
|
||||||
chargerstate.ot_status = HAL_GPIO_ReadPin(Charger_OT_GPIO_Port, Charger_OT_Pin);
|
|
||||||
return chargerstate;
|
|
||||||
}
|
|
||||||
|
|
||||||
void charger_control_setup_DACs()
|
|
||||||
{
|
|
||||||
uint8_t enabledacs[2] = {0x1C, 0x02};
|
|
||||||
HAL_I2C_Master_Transmit(charger_i2c, CURRENT_DAC_ADR, enabledacs, 2, 1000);
|
|
||||||
HAL_I2C_Master_Transmit(charger_i2c, VOLTAGE_DAC_ADR, enabledacs, 2, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** @brief set current channel using the DAC
|
|
||||||
* @param current value in 10 bit => 0-5V are equal to 0-10A so 1 bit is approx 49mA
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
void charger_control_set_current(uint32_t current)
|
|
||||||
{
|
|
||||||
uint8_t currentlow = current & 0xFF;
|
|
||||||
uint8_t currenthigh = ((current>>8) & 0x03) | 0x04;
|
|
||||||
uint8_t current_dac_data[2] = {currenthigh,currentlow};
|
|
||||||
HAL_I2C_Master_Transmit(charger_i2c, CURRENT_DAC_ADR, current_dac_data, 2, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @brief set voltage channel using the DAC
|
|
||||||
* @param voltage value in 10 bit => 0-5V are equal to 0-600V so 1 bit is approx. 2.93V
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
void charger_control_set_voltage(uint32_t voltage)
|
|
||||||
{
|
|
||||||
uint8_t voltagelow = voltage & 0xFF;
|
|
||||||
uint8_t voltagehigh = ((voltage>>8) & 0x03) | 0x04;
|
|
||||||
uint8_t voltage_dac_data[2] = {voltagehigh,voltagelow};
|
|
||||||
HAL_I2C_Master_Transmit(charger_i2c, VOLTAGE_DAC_ADR, voltage_dac_data, 2, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @brief Closes the main charger Relay
|
|
||||||
* @note The relay is also dependend on the Shutdown Circuit
|
|
||||||
*/
|
|
||||||
|
|
||||||
void charger_control_enable_charger_relay()
|
|
||||||
{
|
|
||||||
HAL_GPIO_WritePin(Charger_Relay_GPIO_Port, Charger_Relay_Pin, GPIO_PIN_SET);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @brief opens the main charger Relay
|
|
||||||
* @note The relay is also dependend on the Shutdown Circuit
|
|
||||||
*/
|
|
||||||
|
|
||||||
void charger_control_disable_charger_relay()
|
|
||||||
{
|
|
||||||
HAL_GPIO_WritePin(Charger_Relay_GPIO_Port, Charger_Relay_Pin, GPIO_PIN_RESET);
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @brief enables remote control of the charger
|
|
||||||
* @note The relay is also dependend on the Shutdown Circuit
|
|
||||||
*/
|
|
||||||
|
|
||||||
void charger_control_enable_remote()
|
|
||||||
{
|
|
||||||
HAL_GPIO_WritePin(Charger_Remote_Shutdown_GPIO_Port, Charger_Remote_Shutdown_Pin, GPIO_PIN_SET);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** @brief disable remote control of the charger
|
|
||||||
* @note The relay is also dependend on the Shutdown Circuit
|
|
||||||
*/
|
|
||||||
|
|
||||||
void charger_control_disable_remote()
|
|
||||||
{
|
|
||||||
HAL_GPIO_WritePin(Charger_Remote_Shutdown_GPIO_Port, Charger_Remote_Shutdown_Pin, GPIO_PIN_RESET);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
@ -6,27 +6,21 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2022 STMicroelectronics.
|
* Copyright (c) 2025 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software is licensed under terms that can be found in the LICENSE file
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* in the root directory of this software component.
|
||||||
* License. You may obtain a copy of the License at:
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||||
* opensource.org/licenses/BSD-3-Clause
|
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
/* USER CODE END Header */
|
/* USER CODE END Header */
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "app_touchgfx.h"
|
|
||||||
|
|
||||||
/* Private includes ----------------------------------------------------------*/
|
/* Private includes ----------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN Includes */
|
/* USER CODE BEGIN Includes */
|
||||||
#include "charger_control.h"
|
|
||||||
#include "slave_handler.h"
|
|
||||||
#include "can.h"
|
|
||||||
#include "b_cccv_algo.h"
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
/* USER CODE END Includes */
|
||||||
|
|
||||||
@ -37,6 +31,7 @@
|
|||||||
|
|
||||||
/* Private define ------------------------------------------------------------*/
|
/* Private define ------------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN PD */
|
/* USER CODE BEGIN PD */
|
||||||
|
|
||||||
/* USER CODE END PD */
|
/* USER CODE END PD */
|
||||||
|
|
||||||
/* Private macro -------------------------------------------------------------*/
|
/* Private macro -------------------------------------------------------------*/
|
||||||
@ -64,7 +59,7 @@ PCD_HandleTypeDef hpcd_USB_OTG_HS;
|
|||||||
SDRAM_HandleTypeDef hsdram1;
|
SDRAM_HandleTypeDef hsdram1;
|
||||||
|
|
||||||
/* USER CODE BEGIN PV */
|
/* USER CODE BEGIN PV */
|
||||||
|
uint16_t framebuffer[160*120];
|
||||||
/* USER CODE END PV */
|
/* USER CODE END PV */
|
||||||
|
|
||||||
/* Private function prototypes -----------------------------------------------*/
|
/* Private function prototypes -----------------------------------------------*/
|
||||||
@ -81,13 +76,12 @@ static void MX_UART5_Init(void);
|
|||||||
static void MX_LTDC_Init(void);
|
static void MX_LTDC_Init(void);
|
||||||
static void MX_CRC_Init(void);
|
static void MX_CRC_Init(void);
|
||||||
/* USER CODE BEGIN PFP */
|
/* USER CODE BEGIN PFP */
|
||||||
uint32_t MemoryCheck(UART_HandleTypeDef *uart_console, SDRAM_HandleTypeDef *sram);
|
|
||||||
/* USER CODE END PFP */
|
/* USER CODE END PFP */
|
||||||
|
|
||||||
/* Private user code ---------------------------------------------------------*/
|
/* Private user code ---------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN 0 */
|
/* USER CODE BEGIN 0 */
|
||||||
#define RAM_TEST_BLOCKSIZE 4096
|
|
||||||
__attribute__((section(".ahb_sec"))) uint32_t testarray[RAM_TEST_BLOCKSIZE];
|
|
||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -131,41 +125,24 @@ int main(void)
|
|||||||
MX_UART5_Init();
|
MX_UART5_Init();
|
||||||
MX_LTDC_Init();
|
MX_LTDC_Init();
|
||||||
MX_CRC_Init();
|
MX_CRC_Init();
|
||||||
MX_TouchGFX_Init();
|
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
|
HAL_LTDC_SetAddress(&hltdc, (uint32_t)framebuffer, LTDC_LAYER_1);
|
||||||
//uint32_t sdramcheck = MemoryCheck(&huart5, &hsdram1);
|
uint8_t r = 0xff, g = 0x00, b = 0x00; // Solid red
|
||||||
//MX_LTDC_Init();
|
uint16_t col = ((r>>3)<<11) | ((g>>2)<<5) | (b>>3); // Convert colors to RGB565
|
||||||
slave_handler_init();
|
// Put colors into the framebuffer
|
||||||
initCan(&hfdcan1);
|
for(int i = 0; i < 160*120; i++)
|
||||||
charger_control_init(&hi2c4);
|
{
|
||||||
initChargerAlgo(102, 4.15);
|
framebuffer[i] = col;
|
||||||
setchargecurrent(0.0);
|
}
|
||||||
setchargevoltage(102, 0);
|
|
||||||
charger_control_disable_remote();
|
|
||||||
//HAL_LTDC_Reload(&hltdc, LTDC_RELOAD_IMMEDIATE);
|
|
||||||
/* USER CODE END 2 */
|
/* USER CODE END 2 */
|
||||||
|
|
||||||
/* Infinite loop */
|
/* Infinite loop */
|
||||||
/* USER CODE BEGIN WHILE */
|
/* USER CODE BEGIN WHILE */
|
||||||
uint32_t lasttick = HAL_GetTick();
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
/* USER CODE END WHILE */
|
/* USER CODE END WHILE */
|
||||||
|
|
||||||
MX_TouchGFX_Process();
|
|
||||||
/* USER CODE BEGIN 3 */
|
/* USER CODE BEGIN 3 */
|
||||||
|
|
||||||
|
|
||||||
if((HAL_GetTick() - lasttick) > 1000)
|
|
||||||
{
|
|
||||||
// float maxvoltage = slaves_get_maximum_voltage();
|
|
||||||
// lasttick = HAL_GetTick();
|
|
||||||
// chargingloop(slaves_get_maximum_voltage());
|
|
||||||
HAL_GPIO_TogglePin(STATUS_LED_2_GPIO_Port, STATUS_LED_2_Pin);
|
|
||||||
}
|
|
||||||
|
|
||||||
// HAL_Delay(500);
|
|
||||||
}
|
}
|
||||||
/* USER CODE END 3 */
|
/* USER CODE END 3 */
|
||||||
}
|
}
|
||||||
@ -415,12 +392,12 @@ static void MX_LTDC_Init(void)
|
|||||||
hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
|
hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC;
|
||||||
hltdc.Init.HorizontalSync = 19;
|
hltdc.Init.HorizontalSync = 19;
|
||||||
hltdc.Init.VerticalSync = 2;
|
hltdc.Init.VerticalSync = 2;
|
||||||
hltdc.Init.AccumulatedHBP = 159;
|
hltdc.Init.AccumulatedHBP = 69;
|
||||||
hltdc.Init.AccumulatedVBP = 22;
|
hltdc.Init.AccumulatedVBP = 22;
|
||||||
hltdc.Init.AccumulatedActiveW = 1183;
|
hltdc.Init.AccumulatedActiveW = 549;
|
||||||
hltdc.Init.AccumulatedActiveH = 622;
|
hltdc.Init.AccumulatedActiveH = 294;
|
||||||
hltdc.Init.TotalWidth = 1343;
|
hltdc.Init.TotalWidth = 599;
|
||||||
hltdc.Init.TotalHeigh = 634;
|
hltdc.Init.TotalHeigh = 306;
|
||||||
hltdc.Init.Backcolor.Blue = 0;
|
hltdc.Init.Backcolor.Blue = 0;
|
||||||
hltdc.Init.Backcolor.Green = 0;
|
hltdc.Init.Backcolor.Green = 0;
|
||||||
hltdc.Init.Backcolor.Red = 0;
|
hltdc.Init.Backcolor.Red = 0;
|
||||||
@ -429,10 +406,10 @@ static void MX_LTDC_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
pLayerCfg.WindowX0 = 0;
|
pLayerCfg.WindowX0 = 0;
|
||||||
pLayerCfg.WindowX1 = 1024;
|
pLayerCfg.WindowX1 = 480;
|
||||||
pLayerCfg.WindowY0 = 0;
|
pLayerCfg.WindowY0 = 0;
|
||||||
pLayerCfg.WindowY1 = 600;
|
pLayerCfg.WindowY1 = 272;
|
||||||
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB888;
|
pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565;
|
||||||
pLayerCfg.Alpha = 1;
|
pLayerCfg.Alpha = 1;
|
||||||
pLayerCfg.Alpha0 = 0;
|
pLayerCfg.Alpha0 = 0;
|
||||||
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
|
pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA;
|
||||||
@ -448,8 +425,7 @@ static void MX_LTDC_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
/* USER CODE BEGIN LTDC_Init 2 */
|
/* USER CODE BEGIN LTDC_Init 2 */
|
||||||
__HAL_LTDC_ENABLE(&hltdc);
|
|
||||||
__HAL_LTDC_LAYER_ENABLE(&hltdc,1);
|
|
||||||
/* USER CODE END LTDC_Init 2 */
|
/* USER CODE END LTDC_Init 2 */
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -660,32 +636,7 @@ static void MX_FMC_Init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN FMC_Init 2 */
|
/* USER CODE BEGIN FMC_Init 2 */
|
||||||
FMC_SDRAM_CommandTypeDef command;
|
|
||||||
HAL_StatusTypeDef status;
|
|
||||||
command.CommandTarget = FMC_SDRAM_CMD_TARGET_BANK1;
|
|
||||||
command.CommandMode = FMC_SDRAM_CMD_CLK_ENABLE;
|
|
||||||
command.AutoRefreshNumber = 1;
|
|
||||||
command.ModeRegisterDefinition = 0;
|
|
||||||
status = HAL_SDRAM_SendCommand(&hsdram1, &command, 1000);
|
|
||||||
HAL_Delay(1);
|
|
||||||
|
|
||||||
|
|
||||||
command.CommandMode = FMC_SDRAM_CMD_PALL;
|
|
||||||
command.AutoRefreshNumber = 8;
|
|
||||||
command.ModeRegisterDefinition = 0;
|
|
||||||
status = HAL_SDRAM_SendCommand(&hsdram1, &command, 1000);
|
|
||||||
|
|
||||||
command.CommandMode = FMC_SDRAM_CMD_LOAD_MODE;
|
|
||||||
command.AutoRefreshNumber = 1;
|
|
||||||
command.ModeRegisterDefinition = 0x130;
|
|
||||||
status = HAL_SDRAM_SendCommand(&hsdram1, &command, 1000);
|
|
||||||
|
|
||||||
command.CommandMode = FMC_SDRAM_CMD_AUTOREFRESH_MODE;
|
|
||||||
command.AutoRefreshNumber = 8;
|
|
||||||
command.ModeRegisterDefinition = 0;
|
|
||||||
status = HAL_SDRAM_SendCommand(&hsdram1, &command, 1000);
|
|
||||||
|
|
||||||
status = HAL_SDRAM_ProgramRefreshRate(&hsdram1, 0x0595);
|
|
||||||
/* USER CODE END FMC_Init 2 */
|
/* USER CODE END FMC_Init 2 */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -768,49 +719,6 @@ static void MX_GPIO_Init(void)
|
|||||||
|
|
||||||
/* USER CODE BEGIN 4 */
|
/* USER CODE BEGIN 4 */
|
||||||
|
|
||||||
/** @brief run a Memory Check over the complete SDRAM Area
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
uint32_t MemoryCheck(UART_HandleTypeDef *uart_console, SDRAM_HandleTypeDef *sram)
|
|
||||||
{
|
|
||||||
uint32_t totalerrors = 0;
|
|
||||||
uint32_t numberofsectors = 400;
|
|
||||||
|
|
||||||
uint32_t testadr = 0xC0000000;
|
|
||||||
|
|
||||||
|
|
||||||
//*testpointer = 1;
|
|
||||||
|
|
||||||
for(uint32_t startaddress = 0; startaddress < numberofsectors*RAM_TEST_BLOCKSIZE; startaddress += RAM_TEST_BLOCKSIZE)
|
|
||||||
{
|
|
||||||
|
|
||||||
for(uint32_t i = 0; i < RAM_TEST_BLOCKSIZE; i++)
|
|
||||||
{
|
|
||||||
testarray[i] = 0xFFFF00FF;
|
|
||||||
}
|
|
||||||
//*testadr = (uint32_t*) ;
|
|
||||||
HAL_StatusTypeDef status = HAL_SDRAM_Write_32b(sram, (uint32_t*)(testadr+startaddress), testarray, RAM_TEST_BLOCKSIZE);
|
|
||||||
//testadr = (uint32_t*) (startaddress + 0xC0000000);
|
|
||||||
for(uint32_t i = 0; i < RAM_TEST_BLOCKSIZE; i++)
|
|
||||||
{
|
|
||||||
testarray[i] = 0;
|
|
||||||
}
|
|
||||||
status = HAL_SDRAM_Read_32b(sram,(uint32_t*)(testadr+startaddress), testarray, RAM_TEST_BLOCKSIZE);
|
|
||||||
|
|
||||||
uint32_t errorcounter = 0;
|
|
||||||
for(uint32_t i = 0; i <RAM_TEST_BLOCKSIZE;i++)
|
|
||||||
{
|
|
||||||
if(testarray[i] != (i+3000))
|
|
||||||
{
|
|
||||||
errorcounter++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
totalerrors += errorcounter;
|
|
||||||
}
|
|
||||||
|
|
||||||
return totalerrors;
|
|
||||||
|
|
||||||
}
|
|
||||||
/* USER CODE END 4 */
|
/* USER CODE END 4 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1,70 +0,0 @@
|
|||||||
/*
|
|
||||||
* slave_handler.c
|
|
||||||
*
|
|
||||||
* Created on: Jun 21, 2023
|
|
||||||
* Author: max
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "slave_handler.h"
|
|
||||||
#include "can.h"
|
|
||||||
#include "can-halal.h"
|
|
||||||
|
|
||||||
static uint8_t slave_id_to_index[128] = {0xFF};
|
|
||||||
|
|
||||||
|
|
||||||
void slave_handler_init()
|
|
||||||
{
|
|
||||||
memset(slave_id_to_index,0xFF,128);
|
|
||||||
}
|
|
||||||
|
|
||||||
SlaveHandle slaves[N_SLAVES];
|
|
||||||
static size_t get_slave_index(uint8_t);
|
|
||||||
|
|
||||||
void slaves_handle_status(const uint8_t *data) {
|
|
||||||
uint8_t slave_id = data[0] & 0x7F;
|
|
||||||
uint8_t idx = get_slave_index(slave_id);
|
|
||||||
int error = data[0] & 0x80;
|
|
||||||
if (error) {
|
|
||||||
if (slaves[idx].error.kind == SLAVE_ERR_NONE) {
|
|
||||||
slaves[idx].error.kind = SLAVE_ERR_UNKNOWN;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
slaves[idx].error.kind = SLAVE_ERR_NONE;
|
|
||||||
}
|
|
||||||
slaves[idx].soc = data[1];
|
|
||||||
const uint8_t *ptr = &data[2];
|
|
||||||
slaves[idx].min_voltage = ftcan_unmarshal_unsigned(&ptr, 2);
|
|
||||||
slaves[idx].max_voltage = ftcan_unmarshal_unsigned(&ptr, 2);
|
|
||||||
slaves[idx].max_temp = ftcan_unmarshal_unsigned(&ptr, 2);
|
|
||||||
slaves[idx].last_message = HAL_GetTick();
|
|
||||||
}
|
|
||||||
|
|
||||||
float slaves_get_maximum_voltage()
|
|
||||||
{
|
|
||||||
float maxvoltage = 0;
|
|
||||||
for(uint8_t i = 0; i < N_SLAVES; i++)
|
|
||||||
{
|
|
||||||
if(maxvoltage < slaves[i].max_voltage)
|
|
||||||
maxvoltage = slaves[i].max_voltage;
|
|
||||||
}
|
|
||||||
return ((float)maxvoltage)/10000;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static size_t get_slave_index(uint8_t slave_id) {
|
|
||||||
// Slave IDs are 7-bit, so we can use a 128-element array to map them to
|
|
||||||
// indices. 0xFF is used to mark unseen slave IDs, since the highest index we
|
|
||||||
// could need is N_SLAVES - 1 (i.e. 5).
|
|
||||||
static size_t next_slave_index = 0;
|
|
||||||
if (slave_id_to_index[slave_id] == 0xFF) {
|
|
||||||
if (next_slave_index >= N_SLAVES) {
|
|
||||||
// We've seen more than N_SLAVES slave IDs, this shouldn't happen.
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
slave_id_to_index[slave_id] = next_slave_index;
|
|
||||||
slaves[next_slave_index].id = slave_id;
|
|
||||||
next_slave_index++;
|
|
||||||
}
|
|
||||||
return slave_id_to_index[slave_id];
|
|
||||||
}
|
|
@ -7,13 +7,12 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2022 STMicroelectronics.
|
* Copyright (c) 2025 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software is licensed under terms that can be found in the LICENSE file
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* in the root directory of this software component.
|
||||||
* License. You may obtain a copy of the License at:
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||||
* opensource.org/licenses/BSD-3-Clause
|
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -332,7 +331,6 @@ void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
|
|||||||
/**LTDC GPIO Configuration
|
/**LTDC GPIO Configuration
|
||||||
PF10 ------> LTDC_DE
|
PF10 ------> LTDC_DE
|
||||||
PC0 ------> LTDC_R5
|
PC0 ------> LTDC_R5
|
||||||
PA1 ------> LTDC_R2
|
|
||||||
PA3 ------> LTDC_B5
|
PA3 ------> LTDC_B5
|
||||||
PA4 ------> LTDC_VSYNC
|
PA4 ------> LTDC_VSYNC
|
||||||
PA5 ------> LTDC_R4
|
PA5 ------> LTDC_R4
|
||||||
@ -351,7 +349,6 @@ void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
|
|||||||
PA10 ------> LTDC_B4
|
PA10 ------> LTDC_B4
|
||||||
PA15 ------> LTDC_B6
|
PA15 ------> LTDC_B6
|
||||||
PD2 ------> LTDC_B7
|
PD2 ------> LTDC_B7
|
||||||
PD6 ------> LTDC_B2
|
|
||||||
*/
|
*/
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_10;
|
GPIO_InitStruct.Pin = GPIO_PIN_10;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
@ -367,8 +364,8 @@ void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
|
|||||||
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
|
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
|
||||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
|
GPIO_InitStruct.Pin = GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6
|
||||||
|GPIO_PIN_6|GPIO_PIN_15;
|
|GPIO_PIN_15;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
@ -424,18 +421,9 @@ void HAL_LTDC_MspInit(LTDC_HandleTypeDef* hltdc)
|
|||||||
GPIO_InitStruct.Alternate = GPIO_AF9_LTDC;
|
GPIO_InitStruct.Alternate = GPIO_AF9_LTDC;
|
||||||
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
|
||||||
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_6;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
|
||||||
GPIO_InitStruct.Alternate = GPIO_AF14_LTDC;
|
|
||||||
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
/* LTDC interrupt Init */
|
/* LTDC interrupt Init */
|
||||||
HAL_NVIC_SetPriority(LTDC_IRQn, 0, 0);
|
HAL_NVIC_SetPriority(LTDC_IRQn, 0, 0);
|
||||||
HAL_NVIC_EnableIRQ(LTDC_IRQn);
|
HAL_NVIC_EnableIRQ(LTDC_IRQn);
|
||||||
HAL_NVIC_SetPriority(LTDC_ER_IRQn, 0, 0);
|
|
||||||
HAL_NVIC_EnableIRQ(LTDC_ER_IRQn);
|
|
||||||
/* USER CODE BEGIN LTDC_MspInit 1 */
|
/* USER CODE BEGIN LTDC_MspInit 1 */
|
||||||
|
|
||||||
/* USER CODE END LTDC_MspInit 1 */
|
/* USER CODE END LTDC_MspInit 1 */
|
||||||
@ -463,7 +451,6 @@ void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)
|
|||||||
/**LTDC GPIO Configuration
|
/**LTDC GPIO Configuration
|
||||||
PF10 ------> LTDC_DE
|
PF10 ------> LTDC_DE
|
||||||
PC0 ------> LTDC_R5
|
PC0 ------> LTDC_R5
|
||||||
PA1 ------> LTDC_R2
|
|
||||||
PA3 ------> LTDC_B5
|
PA3 ------> LTDC_B5
|
||||||
PA4 ------> LTDC_VSYNC
|
PA4 ------> LTDC_VSYNC
|
||||||
PA5 ------> LTDC_R4
|
PA5 ------> LTDC_R4
|
||||||
@ -482,26 +469,24 @@ void HAL_LTDC_MspDeInit(LTDC_HandleTypeDef* hltdc)
|
|||||||
PA10 ------> LTDC_B4
|
PA10 ------> LTDC_B4
|
||||||
PA15 ------> LTDC_B6
|
PA15 ------> LTDC_B6
|
||||||
PD2 ------> LTDC_B7
|
PD2 ------> LTDC_B7
|
||||||
PD6 ------> LTDC_B2
|
|
||||||
*/
|
*/
|
||||||
HAL_GPIO_DeInit(GPIOF, GPIO_PIN_10);
|
HAL_GPIO_DeInit(GPIOF, GPIO_PIN_10);
|
||||||
|
|
||||||
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_7
|
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_0|GPIO_PIN_4|GPIO_PIN_6|GPIO_PIN_7
|
||||||
|GPIO_PIN_9);
|
|GPIO_PIN_9);
|
||||||
|
|
||||||
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
|
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6
|
||||||
|GPIO_PIN_6|GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_15);
|
|GPIO_PIN_8|GPIO_PIN_10|GPIO_PIN_15);
|
||||||
|
|
||||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_10|GPIO_PIN_11
|
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_10|GPIO_PIN_11
|
||||||
|GPIO_PIN_15);
|
|GPIO_PIN_15);
|
||||||
|
|
||||||
HAL_GPIO_DeInit(GPIOG, GPIO_PIN_7);
|
HAL_GPIO_DeInit(GPIOG, GPIO_PIN_7);
|
||||||
|
|
||||||
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2|GPIO_PIN_6);
|
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_2);
|
||||||
|
|
||||||
/* LTDC interrupt DeInit */
|
/* LTDC interrupt DeInit */
|
||||||
HAL_NVIC_DisableIRQ(LTDC_IRQn);
|
HAL_NVIC_DisableIRQ(LTDC_IRQn);
|
||||||
HAL_NVIC_DisableIRQ(LTDC_ER_IRQn);
|
|
||||||
/* USER CODE BEGIN LTDC_MspDeInit 1 */
|
/* USER CODE BEGIN LTDC_MspDeInit 1 */
|
||||||
|
|
||||||
/* USER CODE END LTDC_MspDeInit 1 */
|
/* USER CODE END LTDC_MspDeInit 1 */
|
||||||
|
@ -6,13 +6,12 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2022 STMicroelectronics.
|
* Copyright (c) 2025 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software is licensed under terms that can be found in the LICENSE file
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* in the root directory of this software component.
|
||||||
* License. You may obtain a copy of the License at:
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||||
* opensource.org/licenses/BSD-3-Clause
|
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -75,7 +74,7 @@ void NMI_Handler(void)
|
|||||||
|
|
||||||
/* USER CODE END NonMaskableInt_IRQn 0 */
|
/* USER CODE END NonMaskableInt_IRQn 0 */
|
||||||
/* USER CODE BEGIN NonMaskableInt_IRQn 1 */
|
/* USER CODE BEGIN NonMaskableInt_IRQn 1 */
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
/* USER CODE END NonMaskableInt_IRQn 1 */
|
/* USER CODE END NonMaskableInt_IRQn 1 */
|
||||||
@ -267,24 +266,10 @@ void LTDC_IRQHandler(void)
|
|||||||
/* USER CODE END LTDC_IRQn 0 */
|
/* USER CODE END LTDC_IRQn 0 */
|
||||||
HAL_LTDC_IRQHandler(&hltdc);
|
HAL_LTDC_IRQHandler(&hltdc);
|
||||||
/* USER CODE BEGIN LTDC_IRQn 1 */
|
/* USER CODE BEGIN LTDC_IRQn 1 */
|
||||||
|
HAL_LTDC_ProgramLineEvent(&hltdc,0);
|
||||||
/* USER CODE END LTDC_IRQn 1 */
|
/* USER CODE END LTDC_IRQn 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief This function handles LTDC Error global Interrupt.
|
|
||||||
*/
|
|
||||||
void LTDC_ER_IRQHandler(void)
|
|
||||||
{
|
|
||||||
/* USER CODE BEGIN LTDC_ER_IRQn 0 */
|
|
||||||
|
|
||||||
/* USER CODE END LTDC_ER_IRQn 0 */
|
|
||||||
HAL_LTDC_IRQHandler(&hltdc);
|
|
||||||
/* USER CODE BEGIN LTDC_ER_IRQn 1 */
|
|
||||||
|
|
||||||
/* USER CODE END LTDC_ER_IRQn 1 */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @file syscalls.c
|
* @file syscalls.c
|
||||||
* @author Auto-generated by STM32CubeIDE
|
* @author Auto-generated by STM32CubeMX
|
||||||
* @brief STM32CubeIDE Minimal System calls file
|
* @brief Minimal System calls file
|
||||||
*
|
*
|
||||||
* For more information about which c-functions
|
* For more information about which c-functions
|
||||||
* need which of these lowlevel functions
|
* need which of these lowlevel functions
|
||||||
@ -10,13 +10,12 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2020 STMicroelectronics.
|
* Copyright (c) 2020-2024 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software is licensed under terms that can be found in the LICENSE file
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* in the root directory of this software component.
|
||||||
* License. You may obtain a copy of the License at:
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||||
* opensource.org/licenses/BSD-3-Clause
|
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -48,109 +47,130 @@ void initialise_monitor_handles()
|
|||||||
|
|
||||||
int _getpid(void)
|
int _getpid(void)
|
||||||
{
|
{
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _kill(int pid, int sig)
|
int _kill(int pid, int sig)
|
||||||
{
|
{
|
||||||
errno = EINVAL;
|
(void)pid;
|
||||||
return -1;
|
(void)sig;
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _exit (int status)
|
void _exit (int status)
|
||||||
{
|
{
|
||||||
_kill(status, -1);
|
_kill(status, -1);
|
||||||
while (1) {} /* Make sure we hang here */
|
while (1) {} /* Make sure we hang here */
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak)) int _read(int file, char *ptr, int len)
|
__attribute__((weak)) int _read(int file, char *ptr, int len)
|
||||||
{
|
{
|
||||||
int DataIdx;
|
(void)file;
|
||||||
|
int DataIdx;
|
||||||
|
|
||||||
for (DataIdx = 0; DataIdx < len; DataIdx++)
|
for (DataIdx = 0; DataIdx < len; DataIdx++)
|
||||||
{
|
{
|
||||||
*ptr++ = __io_getchar();
|
*ptr++ = __io_getchar();
|
||||||
}
|
}
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
__attribute__((weak)) int _write(int file, char *ptr, int len)
|
__attribute__((weak)) int _write(int file, char *ptr, int len)
|
||||||
{
|
{
|
||||||
int DataIdx;
|
(void)file;
|
||||||
|
int DataIdx;
|
||||||
|
|
||||||
for (DataIdx = 0; DataIdx < len; DataIdx++)
|
for (DataIdx = 0; DataIdx < len; DataIdx++)
|
||||||
{
|
{
|
||||||
__io_putchar(*ptr++);
|
__io_putchar(*ptr++);
|
||||||
}
|
}
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _close(int file)
|
int _close(int file)
|
||||||
{
|
{
|
||||||
return -1;
|
(void)file;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int _fstat(int file, struct stat *st)
|
int _fstat(int file, struct stat *st)
|
||||||
{
|
{
|
||||||
st->st_mode = S_IFCHR;
|
(void)file;
|
||||||
return 0;
|
st->st_mode = S_IFCHR;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _isatty(int file)
|
int _isatty(int file)
|
||||||
{
|
{
|
||||||
return 1;
|
(void)file;
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _lseek(int file, int ptr, int dir)
|
int _lseek(int file, int ptr, int dir)
|
||||||
{
|
{
|
||||||
return 0;
|
(void)file;
|
||||||
|
(void)ptr;
|
||||||
|
(void)dir;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _open(char *path, int flags, ...)
|
int _open(char *path, int flags, ...)
|
||||||
{
|
{
|
||||||
/* Pretend like we always fail */
|
(void)path;
|
||||||
return -1;
|
(void)flags;
|
||||||
|
/* Pretend like we always fail */
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _wait(int *status)
|
int _wait(int *status)
|
||||||
{
|
{
|
||||||
errno = ECHILD;
|
(void)status;
|
||||||
return -1;
|
errno = ECHILD;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _unlink(char *name)
|
int _unlink(char *name)
|
||||||
{
|
{
|
||||||
errno = ENOENT;
|
(void)name;
|
||||||
return -1;
|
errno = ENOENT;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _times(struct tms *buf)
|
int _times(struct tms *buf)
|
||||||
{
|
{
|
||||||
return -1;
|
(void)buf;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _stat(char *file, struct stat *st)
|
int _stat(char *file, struct stat *st)
|
||||||
{
|
{
|
||||||
st->st_mode = S_IFCHR;
|
(void)file;
|
||||||
return 0;
|
st->st_mode = S_IFCHR;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _link(char *old, char *new)
|
int _link(char *old, char *new)
|
||||||
{
|
{
|
||||||
errno = EMLINK;
|
(void)old;
|
||||||
return -1;
|
(void)new;
|
||||||
|
errno = EMLINK;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _fork(void)
|
int _fork(void)
|
||||||
{
|
{
|
||||||
errno = EAGAIN;
|
errno = EAGAIN;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int _execve(char *name, char **argv, char **env)
|
int _execve(char *name, char **argv, char **env)
|
||||||
{
|
{
|
||||||
errno = ENOMEM;
|
(void)name;
|
||||||
return -1;
|
(void)argv;
|
||||||
|
(void)env;
|
||||||
|
errno = ENOMEM;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/**
|
/**
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @file sysmem.c
|
* @file sysmem.c
|
||||||
* @author Generated by STM32CubeIDE
|
* @author Generated by STM32CubeMX
|
||||||
* @brief STM32CubeIDE System Memory calls file
|
* @brief System Memory calls file
|
||||||
*
|
*
|
||||||
* For more information about which C functions
|
* For more information about which C functions
|
||||||
* need which of these lowlevel functions
|
* need which of these lowlevel functions
|
||||||
@ -10,13 +10,12 @@
|
|||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2020 STMicroelectronics.
|
* Copyright (c) 2024 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software is licensed under terms that can be found in the LICENSE file
|
||||||
* the "License"; You may not use this file except in compliance with the
|
* in the root directory of this software component.
|
||||||
* License. You may obtain a copy of the License at:
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||||
* opensource.org/licenses/BSD-3-Clause
|
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -35,26 +35,26 @@ GPIO.groupedBy=Group By Peripherals
|
|||||||
I2C4.IPParameters=Timing
|
I2C4.IPParameters=Timing
|
||||||
I2C4.Timing=0x10909CEC
|
I2C4.Timing=0x10909CEC
|
||||||
KeepUserPlacement=false
|
KeepUserPlacement=false
|
||||||
LTDC.ActiveH=600
|
LTDC.ActiveH=272
|
||||||
LTDC.ActiveW=1024
|
LTDC.ActiveW=480
|
||||||
LTDC.Alpha_L0=1
|
LTDC.Alpha_L0=1
|
||||||
LTDC.Blue_L0=100
|
LTDC.Blue_L0=100
|
||||||
LTDC.FBStartAdress_L0=201326592
|
LTDC.FBStartAdress_L0=201326592
|
||||||
LTDC.HBP=140
|
LTDC.HBP=50
|
||||||
LTDC.HFP=160
|
LTDC.HFP=50
|
||||||
LTDC.HSync=20
|
LTDC.HSync=20
|
||||||
LTDC.IPParameters=ActiveW,ActiveH,HFP,HBP,HSync,VSync,VBP,VFP,Layers,FBStartAdress_L0,ImageWidth_L0,ImageHeight_L0,PixelFormat_L0,Blue_L0,WindowX0_L0,WindowX1_L0,WindowY0_L0,WindowY1_L0,Alpha_L0
|
LTDC.IPParameters=ActiveW,ActiveH,HFP,HBP,HSync,VSync,VBP,VFP,Layers,FBStartAdress_L0,ImageWidth_L0,ImageHeight_L0,PixelFormat_L0,Blue_L0,WindowX0_L0,WindowX1_L0,WindowY0_L0,WindowY1_L0,Alpha_L0
|
||||||
LTDC.ImageHeight_L0=600
|
LTDC.ImageHeight_L0=600
|
||||||
LTDC.ImageWidth_L0=1024
|
LTDC.ImageWidth_L0=1024
|
||||||
LTDC.Layers=0
|
LTDC.Layers=0
|
||||||
LTDC.PixelFormat_L0=LTDC_PIXEL_FORMAT_RGB888
|
LTDC.PixelFormat_L0=LTDC_PIXEL_FORMAT_RGB565
|
||||||
LTDC.VBP=20
|
LTDC.VBP=20
|
||||||
LTDC.VFP=12
|
LTDC.VFP=12
|
||||||
LTDC.VSync=3
|
LTDC.VSync=3
|
||||||
LTDC.WindowX0_L0=0
|
LTDC.WindowX0_L0=0
|
||||||
LTDC.WindowX1_L0=1024
|
LTDC.WindowX1_L0=480
|
||||||
LTDC.WindowY0_L0=0
|
LTDC.WindowY0_L0=0
|
||||||
LTDC.WindowY1_L0=600
|
LTDC.WindowY1_L0=272
|
||||||
MMTAppRegionsCount=0
|
MMTAppRegionsCount=0
|
||||||
MMTConfigApplied=false
|
MMTConfigApplied=false
|
||||||
Mcu.CPN=STM32H7A3ZIT6
|
Mcu.CPN=STM32H7A3ZIT6
|
||||||
@ -88,95 +88,92 @@ Mcu.Pin15=PC0
|
|||||||
Mcu.Pin16=PC1
|
Mcu.Pin16=PC1
|
||||||
Mcu.Pin17=PC2_C
|
Mcu.Pin17=PC2_C
|
||||||
Mcu.Pin18=PC3_C
|
Mcu.Pin18=PC3_C
|
||||||
Mcu.Pin19=PA1
|
Mcu.Pin19=PA3
|
||||||
Mcu.Pin2=PC14-OSC32_IN
|
Mcu.Pin2=PC14-OSC32_IN
|
||||||
Mcu.Pin20=PA3
|
Mcu.Pin20=PA4
|
||||||
Mcu.Pin21=PA4
|
Mcu.Pin21=PA5
|
||||||
Mcu.Pin22=PA5
|
Mcu.Pin22=PA6
|
||||||
Mcu.Pin23=PA6
|
Mcu.Pin23=PA7
|
||||||
Mcu.Pin24=PA7
|
Mcu.Pin24=PC4
|
||||||
Mcu.Pin25=PC4
|
Mcu.Pin25=PB0
|
||||||
Mcu.Pin26=PB0
|
Mcu.Pin26=PB1
|
||||||
Mcu.Pin27=PB1
|
Mcu.Pin27=PF11
|
||||||
Mcu.Pin28=PF11
|
Mcu.Pin28=PF12
|
||||||
Mcu.Pin29=PF12
|
Mcu.Pin29=PF13
|
||||||
Mcu.Pin3=PC15-OSC32_OUT
|
Mcu.Pin3=PC15-OSC32_OUT
|
||||||
Mcu.Pin30=PF13
|
Mcu.Pin30=PF14
|
||||||
Mcu.Pin31=PF14
|
Mcu.Pin31=PF15
|
||||||
Mcu.Pin32=PF15
|
Mcu.Pin32=PG0
|
||||||
Mcu.Pin33=PG0
|
Mcu.Pin33=PG1
|
||||||
Mcu.Pin34=PG1
|
Mcu.Pin34=PE7
|
||||||
Mcu.Pin35=PE7
|
Mcu.Pin35=PE8
|
||||||
Mcu.Pin36=PE8
|
Mcu.Pin36=PE9
|
||||||
Mcu.Pin37=PE9
|
Mcu.Pin37=PE10
|
||||||
Mcu.Pin38=PE10
|
Mcu.Pin38=PE11
|
||||||
Mcu.Pin39=PE11
|
Mcu.Pin39=PE12
|
||||||
Mcu.Pin4=PF0
|
Mcu.Pin4=PF0
|
||||||
Mcu.Pin40=PE12
|
Mcu.Pin40=PE13
|
||||||
Mcu.Pin41=PE13
|
Mcu.Pin41=PE14
|
||||||
Mcu.Pin42=PE14
|
Mcu.Pin42=PE15
|
||||||
Mcu.Pin43=PE15
|
Mcu.Pin43=PB10
|
||||||
Mcu.Pin44=PB10
|
Mcu.Pin44=PB11
|
||||||
Mcu.Pin45=PB11
|
Mcu.Pin45=PB12
|
||||||
Mcu.Pin46=PB12
|
Mcu.Pin46=PB13
|
||||||
Mcu.Pin47=PB13
|
Mcu.Pin47=PB14
|
||||||
Mcu.Pin48=PB14
|
Mcu.Pin48=PB15
|
||||||
Mcu.Pin49=PB15
|
Mcu.Pin49=PD8
|
||||||
Mcu.Pin5=PF1
|
Mcu.Pin5=PF1
|
||||||
Mcu.Pin50=PD8
|
Mcu.Pin50=PD9
|
||||||
Mcu.Pin51=PD9
|
Mcu.Pin51=PD10
|
||||||
Mcu.Pin52=PD10
|
Mcu.Pin52=PD14
|
||||||
Mcu.Pin53=PD14
|
Mcu.Pin53=PD15
|
||||||
Mcu.Pin54=PD15
|
Mcu.Pin54=PG2
|
||||||
Mcu.Pin55=PG2
|
Mcu.Pin55=PG4
|
||||||
Mcu.Pin56=PG4
|
Mcu.Pin56=PG5
|
||||||
Mcu.Pin57=PG5
|
Mcu.Pin57=PG7
|
||||||
Mcu.Pin58=PG7
|
Mcu.Pin58=PG8
|
||||||
Mcu.Pin59=PG8
|
Mcu.Pin59=PC6
|
||||||
Mcu.Pin6=PF2
|
Mcu.Pin6=PF2
|
||||||
Mcu.Pin60=PC6
|
Mcu.Pin60=PC7
|
||||||
Mcu.Pin61=PC7
|
Mcu.Pin61=PC8
|
||||||
Mcu.Pin62=PC8
|
Mcu.Pin62=PC9
|
||||||
Mcu.Pin63=PC9
|
Mcu.Pin63=PA8
|
||||||
Mcu.Pin64=PA8
|
Mcu.Pin64=PA9
|
||||||
Mcu.Pin65=PA9
|
Mcu.Pin65=PA10
|
||||||
Mcu.Pin66=PA10
|
Mcu.Pin66=PA11
|
||||||
Mcu.Pin67=PA11
|
Mcu.Pin67=PA12
|
||||||
Mcu.Pin68=PA12
|
Mcu.Pin68=PA13
|
||||||
Mcu.Pin69=PA13
|
Mcu.Pin69=PA14
|
||||||
Mcu.Pin7=PF3
|
Mcu.Pin7=PF3
|
||||||
Mcu.Pin70=PA14
|
Mcu.Pin70=PA15
|
||||||
Mcu.Pin71=PA15
|
Mcu.Pin71=PC10
|
||||||
Mcu.Pin72=PC10
|
Mcu.Pin72=PC11
|
||||||
Mcu.Pin73=PC11
|
Mcu.Pin73=PC12
|
||||||
Mcu.Pin74=PC12
|
Mcu.Pin74=PD0
|
||||||
Mcu.Pin75=PD0
|
Mcu.Pin75=PD1
|
||||||
Mcu.Pin76=PD1
|
Mcu.Pin76=PD2
|
||||||
Mcu.Pin77=PD2
|
Mcu.Pin77=PD7
|
||||||
Mcu.Pin78=PD6
|
Mcu.Pin78=PG9
|
||||||
Mcu.Pin79=PD7
|
Mcu.Pin79=PG11
|
||||||
Mcu.Pin8=PF4
|
Mcu.Pin8=PF4
|
||||||
Mcu.Pin80=PG9
|
Mcu.Pin80=PG12
|
||||||
Mcu.Pin81=PG11
|
Mcu.Pin81=PG13
|
||||||
Mcu.Pin82=PG12
|
Mcu.Pin82=PG14
|
||||||
Mcu.Pin83=PG13
|
Mcu.Pin83=PG15
|
||||||
Mcu.Pin84=PG14
|
Mcu.Pin84=PB3
|
||||||
Mcu.Pin85=PG15
|
Mcu.Pin85=PB4
|
||||||
Mcu.Pin86=PB3
|
Mcu.Pin86=PB5
|
||||||
Mcu.Pin87=PB4
|
Mcu.Pin87=PB6
|
||||||
Mcu.Pin88=PB5
|
Mcu.Pin88=PB7
|
||||||
Mcu.Pin89=PB6
|
Mcu.Pin89=PB8
|
||||||
Mcu.Pin9=PF5
|
Mcu.Pin9=PF5
|
||||||
Mcu.Pin90=PB7
|
Mcu.Pin90=PB9
|
||||||
Mcu.Pin91=PB8
|
Mcu.Pin91=PE0
|
||||||
Mcu.Pin92=PB9
|
Mcu.Pin92=PE1
|
||||||
Mcu.Pin93=PE0
|
Mcu.Pin93=VP_CRC_VS_CRC
|
||||||
Mcu.Pin94=PE1
|
Mcu.Pin94=VP_SYS_VS_Systick
|
||||||
Mcu.Pin95=VP_CRC_VS_CRC
|
Mcu.Pin95=VP_MEMORYMAP_VS_MEMORYMAP
|
||||||
Mcu.Pin96=VP_SYS_VS_Systick
|
Mcu.PinsNb=96
|
||||||
Mcu.Pin97=VP_MEMORYMAP_VS_MEMORYMAP
|
|
||||||
Mcu.Pin98=VP_STMicroelectronics.X-CUBE-TOUCHGFX_VS_GraphicsJjApplication_4.21.0
|
|
||||||
Mcu.PinsNb=99
|
|
||||||
Mcu.ThirdParty0=STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0
|
Mcu.ThirdParty0=STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0
|
||||||
Mcu.ThirdPartyNb=1
|
Mcu.ThirdPartyNb=1
|
||||||
Mcu.UserConstants=
|
Mcu.UserConstants=
|
||||||
@ -191,7 +188,6 @@ NVIC.FDCAN_CAL_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
|||||||
NVIC.FMC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
NVIC.FMC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||||
NVIC.ForceEnableDMAVector=true
|
NVIC.ForceEnableDMAVector=true
|
||||||
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.LTDC_ER_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
|
||||||
NVIC.LTDC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
NVIC.LTDC_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||||
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
@ -200,9 +196,7 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
|
|||||||
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:false
|
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:false
|
||||||
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||||
PA1.Mode=RGB666
|
PA10.Mode=RGB565
|
||||||
PA1.Signal=LTDC_R2
|
|
||||||
PA10.Mode=RGB666
|
|
||||||
PA10.Signal=LTDC_B4
|
PA10.Signal=LTDC_B4
|
||||||
PA11.Mode=Device_Only_FS
|
PA11.Mode=Device_Only_FS
|
||||||
PA11.Signal=USB_OTG_HS_DM
|
PA11.Signal=USB_OTG_HS_DM
|
||||||
@ -212,28 +206,28 @@ PA13.Mode=Trace_Asynchronous_SW
|
|||||||
PA13.Signal=DEBUG_JTMS-SWDIO
|
PA13.Signal=DEBUG_JTMS-SWDIO
|
||||||
PA14.Mode=Trace_Asynchronous_SW
|
PA14.Mode=Trace_Asynchronous_SW
|
||||||
PA14.Signal=DEBUG_JTCK-SWCLK
|
PA14.Signal=DEBUG_JTCK-SWCLK
|
||||||
PA15.Mode=RGB666
|
PA15.Mode=RGB565
|
||||||
PA15.Signal=LTDC_B6
|
PA15.Signal=LTDC_B6
|
||||||
PA3.Mode=RGB666
|
PA3.Mode=RGB565
|
||||||
PA3.Signal=LTDC_B5
|
PA3.Signal=LTDC_B5
|
||||||
PA4.Mode=RGB666
|
PA4.Mode=RGB565
|
||||||
PA4.Signal=LTDC_VSYNC
|
PA4.Signal=LTDC_VSYNC
|
||||||
PA5.Mode=RGB666
|
PA5.Mode=RGB565
|
||||||
PA5.Signal=LTDC_R4
|
PA5.Signal=LTDC_R4
|
||||||
PA6.Mode=RGB666
|
PA6.Mode=RGB565
|
||||||
PA6.Signal=LTDC_G2
|
PA6.Signal=LTDC_G2
|
||||||
PA7.Signal=FMC_SDNWE
|
PA7.Signal=FMC_SDNWE
|
||||||
PA8.Mode=RGB666
|
PA8.Mode=RGB565
|
||||||
PA8.Signal=LTDC_B3
|
PA8.Signal=LTDC_B3
|
||||||
PA9.Mode=Activate_VBUS_FS
|
PA9.Mode=Activate_VBUS_FS
|
||||||
PA9.Signal=USB_OTG_HS_VBUS
|
PA9.Signal=USB_OTG_HS_VBUS
|
||||||
PB0.Mode=RGB666
|
PB0.Mode=RGB565
|
||||||
PB0.Signal=LTDC_R3
|
PB0.Signal=LTDC_R3
|
||||||
PB1.Mode=RGB666
|
PB1.Mode=RGB565
|
||||||
PB1.Signal=LTDC_R6
|
PB1.Signal=LTDC_R6
|
||||||
PB10.Mode=RGB666
|
PB10.Mode=RGB565
|
||||||
PB10.Signal=LTDC_G4
|
PB10.Signal=LTDC_G4
|
||||||
PB11.Mode=RGB666
|
PB11.Mode=RGB565
|
||||||
PB11.Signal=LTDC_G5
|
PB11.Signal=LTDC_G5
|
||||||
PB12.Mode=Asynchronous
|
PB12.Mode=Asynchronous
|
||||||
PB12.Signal=UART5_RX
|
PB12.Signal=UART5_RX
|
||||||
@ -241,7 +235,7 @@ PB13.Mode=Asynchronous
|
|||||||
PB13.Signal=UART5_TX
|
PB13.Signal=UART5_TX
|
||||||
PB14.Mode=SD_1_bit
|
PB14.Mode=SD_1_bit
|
||||||
PB14.Signal=SDMMC2_D0
|
PB14.Signal=SDMMC2_D0
|
||||||
PB15.Mode=RGB666
|
PB15.Mode=RGB565
|
||||||
PB15.Signal=LTDC_G7
|
PB15.Signal=LTDC_G7
|
||||||
PB3.Mode=Trace_Asynchronous_SW
|
PB3.Mode=Trace_Asynchronous_SW
|
||||||
PB3.Signal=DEBUG_JTDO-SWO
|
PB3.Signal=DEBUG_JTDO-SWO
|
||||||
@ -267,7 +261,7 @@ PB8.Mode=FDCAN_Activate
|
|||||||
PB8.Signal=FDCAN1_RX
|
PB8.Signal=FDCAN1_RX
|
||||||
PB9.Mode=FDCAN_Activate
|
PB9.Mode=FDCAN_Activate
|
||||||
PB9.Signal=FDCAN1_TX
|
PB9.Signal=FDCAN1_TX
|
||||||
PC0.Mode=RGB666
|
PC0.Mode=RGB565
|
||||||
PC0.Signal=LTDC_R5
|
PC0.Signal=LTDC_R5
|
||||||
PC1.Mode=SD_1_bit
|
PC1.Mode=SD_1_bit
|
||||||
PC1.Signal=SDMMC2_CK
|
PC1.Signal=SDMMC2_CK
|
||||||
@ -291,27 +285,25 @@ PC2_C.Mode=SdramChipSelect1_1
|
|||||||
PC2_C.Signal=FMC_SDNE0
|
PC2_C.Signal=FMC_SDNE0
|
||||||
PC3_C.Mode=SdramChipSelect1_1
|
PC3_C.Mode=SdramChipSelect1_1
|
||||||
PC3_C.Signal=FMC_SDCKE0
|
PC3_C.Signal=FMC_SDCKE0
|
||||||
PC4.Mode=RGB666
|
PC4.Mode=RGB565
|
||||||
PC4.Signal=LTDC_R7
|
PC4.Signal=LTDC_R7
|
||||||
PC6.Mode=RGB666
|
PC6.Mode=RGB565
|
||||||
PC6.Signal=LTDC_HSYNC
|
PC6.Signal=LTDC_HSYNC
|
||||||
PC7.Mode=RGB666
|
PC7.Mode=RGB565
|
||||||
PC7.Signal=LTDC_G6
|
PC7.Signal=LTDC_G6
|
||||||
PC8.GPIOParameters=GPIO_Label
|
PC8.GPIOParameters=GPIO_Label
|
||||||
PC8.GPIO_Label=Display_Reset
|
PC8.GPIO_Label=Display_Reset
|
||||||
PC8.Locked=true
|
PC8.Locked=true
|
||||||
PC8.Signal=GPIO_Output
|
PC8.Signal=GPIO_Output
|
||||||
PC9.Mode=RGB666
|
PC9.Mode=RGB565
|
||||||
PC9.Signal=LTDC_G3
|
PC9.Signal=LTDC_G3
|
||||||
PD0.Signal=FMC_D2_DA2
|
PD0.Signal=FMC_D2_DA2
|
||||||
PD1.Signal=FMC_D3_DA3
|
PD1.Signal=FMC_D3_DA3
|
||||||
PD10.Signal=FMC_D15_DA15
|
PD10.Signal=FMC_D15_DA15
|
||||||
PD14.Signal=FMC_D0_DA0
|
PD14.Signal=FMC_D0_DA0
|
||||||
PD15.Signal=FMC_D1_DA1
|
PD15.Signal=FMC_D1_DA1
|
||||||
PD2.Mode=RGB666
|
PD2.Mode=RGB565
|
||||||
PD2.Signal=LTDC_B7
|
PD2.Signal=LTDC_B7
|
||||||
PD6.Mode=RGB666
|
|
||||||
PD6.Signal=LTDC_B2
|
|
||||||
PD7.Mode=SD_1_bit
|
PD7.Mode=SD_1_bit
|
||||||
PD7.Signal=SDMMC2_CMD
|
PD7.Signal=SDMMC2_CMD
|
||||||
PD8.Signal=FMC_D13_DA13
|
PD8.Signal=FMC_D13_DA13
|
||||||
@ -335,7 +327,7 @@ PE8.Signal=FMC_D5_DA5
|
|||||||
PE9.Signal=FMC_D6_DA6
|
PE9.Signal=FMC_D6_DA6
|
||||||
PF0.Signal=FMC_A0
|
PF0.Signal=FMC_A0
|
||||||
PF1.Signal=FMC_A1
|
PF1.Signal=FMC_A1
|
||||||
PF10.Mode=RGB666
|
PF10.Mode=RGB565
|
||||||
PF10.Signal=LTDC_DE
|
PF10.Signal=LTDC_DE
|
||||||
PF11.Signal=FMC_SDNRAS
|
PF11.Signal=FMC_SDNRAS
|
||||||
PF12.Signal=FMC_A6
|
PF12.Signal=FMC_A6
|
||||||
@ -376,7 +368,7 @@ PG15.Signal=FMC_SDNCAS
|
|||||||
PG2.Signal=FMC_A12
|
PG2.Signal=FMC_A12
|
||||||
PG4.Signal=FMC_A14_BA0
|
PG4.Signal=FMC_A14_BA0
|
||||||
PG5.Signal=FMC_A15_BA1
|
PG5.Signal=FMC_A15_BA1
|
||||||
PG7.Mode=RGB666
|
PG7.Mode=RGB565
|
||||||
PG7.Signal=LTDC_CLK
|
PG7.Signal=LTDC_CLK
|
||||||
PG8.Signal=FMC_SDCLK
|
PG8.Signal=FMC_SDCLK
|
||||||
PG9.GPIOParameters=GPIO_Label
|
PG9.GPIOParameters=GPIO_Label
|
||||||
@ -413,11 +405,11 @@ ProjectManager.ProjectName=FT23_Charger
|
|||||||
ProjectManager.ProjectStructure=
|
ProjectManager.ProjectStructure=
|
||||||
ProjectManager.RegisterCallBack=
|
ProjectManager.RegisterCallBack=
|
||||||
ProjectManager.StackSize=0x400
|
ProjectManager.StackSize=0x400
|
||||||
ProjectManager.TargetToolchain=STM32CubeIDE
|
ProjectManager.TargetToolchain=Makefile
|
||||||
ProjectManager.ToolChainLocation=
|
ProjectManager.ToolChainLocation=
|
||||||
ProjectManager.UAScriptAfterPath=
|
ProjectManager.UAScriptAfterPath=
|
||||||
ProjectManager.UAScriptBeforePath=
|
ProjectManager.UAScriptBeforePath=
|
||||||
ProjectManager.UnderRoot=true
|
ProjectManager.UnderRoot=false
|
||||||
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_FDCAN1_Init-FDCAN1-false-HAL-true,4-MX_FMC_Init-FMC-false-HAL-true,5-MX_I2C4_Init-I2C4-false-HAL-true,6-MX_SDMMC2_SD_Init-SDMMC2-false-HAL-true,7-MX_USART10_UART_Init-USART10-false-HAL-true,8-MX_USB_OTG_HS_PCD_Init-USB_OTG_HS-false-HAL-true,9-MX_UART5_Init-UART5-false-HAL-true,10-MX_LTDC_Init-LTDC-false-HAL-true,11-MX_CRC_Init-CRC-false-HAL-true,13-MX_TouchGFX_Init-STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0-false-HAL-false,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true,14-MX_TouchGFX_Process-STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0-false-HAL-false
|
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_FDCAN1_Init-FDCAN1-false-HAL-true,4-MX_FMC_Init-FMC-false-HAL-true,5-MX_I2C4_Init-I2C4-false-HAL-true,6-MX_SDMMC2_SD_Init-SDMMC2-false-HAL-true,7-MX_USART10_UART_Init-USART10-false-HAL-true,8-MX_USB_OTG_HS_PCD_Init-USB_OTG_HS-false-HAL-true,9-MX_UART5_Init-UART5-false-HAL-true,10-MX_LTDC_Init-LTDC-false-HAL-true,11-MX_CRC_Init-CRC-false-HAL-true,13-MX_TouchGFX_Init-STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0-false-HAL-false,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true,14-MX_TouchGFX_Process-STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0-false-HAL-false
|
||||||
RCC.ADCCLockSelection=RCC_ADCCLKSOURCE_PLL2
|
RCC.ADCCLockSelection=RCC_ADCCLKSOURCE_PLL2
|
||||||
RCC.ADCFreq_Value=160000000
|
RCC.ADCFreq_Value=160000000
|
||||||
@ -625,9 +617,8 @@ SH.FMC_SDNRAS.0=FMC_SDNRAS,13b-sda1
|
|||||||
SH.FMC_SDNRAS.ConfNb=1
|
SH.FMC_SDNRAS.ConfNb=1
|
||||||
SH.FMC_SDNWE.0=FMC_SDNWE,13b-sda1
|
SH.FMC_SDNWE.0=FMC_SDNWE,13b-sda1
|
||||||
SH.FMC_SDNWE.ConfNb=1
|
SH.FMC_SDNWE.ConfNb=1
|
||||||
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0.ApplicationCcGraphicsJjApplication=TouchGFXOoGenerator
|
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0.GraphicsJjApplication_Checked=false
|
||||||
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0.GraphicsJjApplication_Checked=true
|
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0.IPParameters=tgfx_display_interface,tgfx_vsync
|
||||||
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0.IPParameters=ApplicationCcGraphicsJjApplication,tgfx_display_interface,tgfx_vsync
|
|
||||||
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0.tgfx_display_interface=disp_ltdc
|
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0.tgfx_display_interface=disp_ltdc
|
||||||
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0.tgfx_vsync=vsync_ltdc
|
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0.tgfx_vsync=vsync_ltdc
|
||||||
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0_IsPackSelfContextualization=true
|
STMicroelectronics.X-CUBE-TOUCHGFX.4.21.0_IsPackSelfContextualization=true
|
||||||
@ -640,8 +631,6 @@ VP_CRC_VS_CRC.Mode=CRC_Activate
|
|||||||
VP_CRC_VS_CRC.Signal=CRC_VS_CRC
|
VP_CRC_VS_CRC.Signal=CRC_VS_CRC
|
||||||
VP_MEMORYMAP_VS_MEMORYMAP.Mode=CurAppReg
|
VP_MEMORYMAP_VS_MEMORYMAP.Mode=CurAppReg
|
||||||
VP_MEMORYMAP_VS_MEMORYMAP.Signal=MEMORYMAP_VS_MEMORYMAP
|
VP_MEMORYMAP_VS_MEMORYMAP.Signal=MEMORYMAP_VS_MEMORYMAP
|
||||||
VP_STMicroelectronics.X-CUBE-TOUCHGFX_VS_GraphicsJjApplication_4.21.0.Mode=GraphicsJjApplication
|
|
||||||
VP_STMicroelectronics.X-CUBE-TOUCHGFX_VS_GraphicsJjApplication_4.21.0.Signal=STMicroelectronics.X-CUBE-TOUCHGFX_VS_GraphicsJjApplication_4.21.0
|
|
||||||
VP_SYS_VS_Systick.Mode=SysTick
|
VP_SYS_VS_Systick.Mode=SysTick
|
||||||
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
|
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
|
||||||
board=custom
|
board=custom
|
||||||
|
@ -1,78 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<launchConfiguration type="com.st.stm32cube.ide.mcu.debug.launch.launchConfigurationType">
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.access_port_id" value="0"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.cubeprog_external_loaders" value="[]"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_live_expr" value="true"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.enable_swv" value="false"/>
|
|
||||||
<intAttribute key="com.st.stm32cube.ide.mcu.debug.launch.formatVersion" value="2"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.ip_address_local" value="localhost"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.limit_swo_clock.enabled" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.limit_swo_clock.value" value=""/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.loadList" value="{"fItems":[{"fIsFromMainTab":true,"fPath":"Debug/FT23_Charger.elf","fProjectName":"FT23_Charger","fPerformBuild":true,"fDownload":true,"fLoadSymbols":true}]}"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.override_start_address_mode" value="default"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.remoteCommand" value="target remote"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startServer" value="true"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startuptab.exception.divby0" value="true"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startuptab.exception.unaligned" value="false"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.startuptab.haltonexception" value="true"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swd_mode" value="true"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swv_port" value="61235"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.swv_trace_hclk" value="16000000"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.useRemoteTarget" value="true"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.launch.vector_table" value=""/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.launch.verify_flash_download" value="true"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.cti_allow_halt" value="false"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.cti_signal_halt" value="false"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_logging" value="false"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_max_halt_delay" value="false"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.enable_shared_stlink" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.frequency" value="140"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.halt_all_on_reset" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.log_file" value="C:\Users\max\STM32CubeIDE\workspace_1.4.0\FT23_Charger\Debug\st-link_gdbserver_log.txt"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.low_power_debug" value="enable"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.max_halt_delay" value="2"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.reset_strategy" value="connect_under_reset"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_check_serial_number" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.stlink_txt_serial_number" value=""/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlink.watchdog_config" value="none"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.debug.stlinkenable_rtos" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.debug.stlinkrestart_configurations" value="{"fVersion":1,"fItems":[{"fDisplayName":"Reset","fIsSuppressible":false,"fResetAttribute":"Software system reset","fResetStrategies":[{"fDisplayName":"Software system reset","fLaunchAttribute":"system_reset","fGdbCommands":["monitor reset\n"],"fCmdOptions":["-g"]},{"fDisplayName":"Hardware reset","fLaunchAttribute":"hardware_reset","fGdbCommands":["monitor reset hardware\n"],"fCmdOptions":["-g"]},{"fDisplayName":"Core reset","fLaunchAttribute":"core_reset","fGdbCommands":["monitor reset core\n"],"fCmdOptions":["-g"]},{"fDisplayName":"None","fLaunchAttribute":"no_reset","fGdbCommands":[],"fCmdOptions":["-g"]}],"fGdbCommandGroup":{"name":"Additional commands","commands":[]},"fStartApplication":true}]}"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.enableRtosProxy" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyCustomProperties" value=""/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriver" value="threadx"/>
|
|
||||||
<booleanAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriverAuto" value="false"/>
|
|
||||||
<stringAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyDriverPort" value="cortex_m0"/>
|
|
||||||
<intAttribute key="com.st.stm32cube.ide.mcu.rtosproxy.rtosProxyPort" value="60000"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doHalt" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.doReset" value="false"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.initCommands" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDeviceId" value="com.st.stm32cube.ide.mcu.debug.stlink"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
|
|
||||||
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="61234"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.runCommands" value=""/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="true"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="arm-none-eabi-gdb"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.NON_STOP" value="false"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
|
|
||||||
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_START_MODE" value="remote"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_STOP_AT_MAIN_SYMBOL" value="main"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="Debug/FT23_Charger.elf"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="FT23_Charger"/>
|
|
||||||
<booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
|
|
||||||
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1019471104"/>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
|
|
||||||
<listEntry value="/FT23_Charger"/>
|
|
||||||
</listAttribute>
|
|
||||||
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
|
|
||||||
<listEntry value="4"/>
|
|
||||||
</listAttribute>
|
|
||||||
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="<?xml version="1.0" encoding="UTF-8" standalone="no"?><memoryBlockExpressionList context="reserved-for-future-use"/>"/>
|
|
||||||
<stringAttribute key="process_factory_id" value="com.st.stm32cube.ide.mcu.debug.launch.HardwareDebugProcessFactory"/>
|
|
||||||
</launchConfiguration>
|
|
222
Software/Makefile
Normal file
222
Software/Makefile
Normal file
@ -0,0 +1,222 @@
|
|||||||
|
##########################################################################################################################
|
||||||
|
# File automatically-generated by tool: [projectgenerator] version: [4.5.0-RC5] date: [Mon Mar 31 16:30:20 CEST 2025]
|
||||||
|
##########################################################################################################################
|
||||||
|
|
||||||
|
# ------------------------------------------------
|
||||||
|
# Generic Makefile (based on gcc)
|
||||||
|
#
|
||||||
|
# ChangeLog :
|
||||||
|
# 2017-02-10 - Several enhancements + project update mode
|
||||||
|
# 2015-07-22 - first version
|
||||||
|
# ------------------------------------------------
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# target
|
||||||
|
######################################
|
||||||
|
TARGET = FT23_Charger
|
||||||
|
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# building variables
|
||||||
|
######################################
|
||||||
|
# debug build?
|
||||||
|
DEBUG = 1
|
||||||
|
# optimization
|
||||||
|
OPT = -Og
|
||||||
|
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# paths
|
||||||
|
#######################################
|
||||||
|
# Build path
|
||||||
|
BUILD_DIR = build
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# source
|
||||||
|
######################################
|
||||||
|
# C sources
|
||||||
|
C_SOURCES = \
|
||||||
|
Core/Src/main.c \
|
||||||
|
Core/Src/stm32h7xx_it.c \
|
||||||
|
Core/Src/stm32h7xx_hal_msp.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_fmc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_nor.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sram.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_nand.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sdram.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_sdmmc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_delayblock.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sd.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sd_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mmc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mmc_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_usb.c \
|
||||||
|
Core/Src/system_stm32h7xx.c \
|
||||||
|
Core/Src/sysmem.c \
|
||||||
|
Core/Src/syscalls.c
|
||||||
|
|
||||||
|
# ASM sources
|
||||||
|
ASM_SOURCES = \
|
||||||
|
startup_stm32h7a3xx.s
|
||||||
|
|
||||||
|
# ASM sources
|
||||||
|
ASMM_SOURCES =
|
||||||
|
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# binaries
|
||||||
|
#######################################
|
||||||
|
PREFIX = arm-none-eabi-
|
||||||
|
# The gcc compiler bin path can be either defined in make command via GCC_PATH variable (> make GCC_PATH=xxx)
|
||||||
|
# either it can be added to the PATH environment variable.
|
||||||
|
ifdef GCC_PATH
|
||||||
|
CC = $(GCC_PATH)/$(PREFIX)gcc
|
||||||
|
AS = $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp
|
||||||
|
CP = $(GCC_PATH)/$(PREFIX)objcopy
|
||||||
|
SZ = $(GCC_PATH)/$(PREFIX)size
|
||||||
|
else
|
||||||
|
CC = $(PREFIX)gcc
|
||||||
|
AS = $(PREFIX)gcc -x assembler-with-cpp
|
||||||
|
CP = $(PREFIX)objcopy
|
||||||
|
SZ = $(PREFIX)size
|
||||||
|
endif
|
||||||
|
HEX = $(CP) -O ihex
|
||||||
|
BIN = $(CP) -O binary -S
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# CFLAGS
|
||||||
|
#######################################
|
||||||
|
# cpu
|
||||||
|
CPU = -mcpu=cortex-m7
|
||||||
|
|
||||||
|
# fpu
|
||||||
|
FPU = -mfpu=fpv5-d16
|
||||||
|
|
||||||
|
# float-abi
|
||||||
|
FLOAT-ABI = -mfloat-abi=hard
|
||||||
|
|
||||||
|
# mcu
|
||||||
|
MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)
|
||||||
|
|
||||||
|
# macros for gcc
|
||||||
|
# AS defines
|
||||||
|
AS_DEFS =
|
||||||
|
|
||||||
|
# C defines
|
||||||
|
C_DEFS = \
|
||||||
|
-DUSE_PWR_LDO_SUPPLY \
|
||||||
|
-DUSE_HAL_DRIVER \
|
||||||
|
-DSTM32H7A3xx
|
||||||
|
|
||||||
|
|
||||||
|
# AS includes
|
||||||
|
AS_INCLUDES =
|
||||||
|
|
||||||
|
# C includes
|
||||||
|
C_INCLUDES = \
|
||||||
|
-ICore/Inc \
|
||||||
|
-IDrivers/STM32H7xx_HAL_Driver/Inc \
|
||||||
|
-IDrivers/STM32H7xx_HAL_Driver/Inc/Legacy \
|
||||||
|
-IDrivers/CMSIS/Device/ST/STM32H7xx/Include \
|
||||||
|
-IDrivers/CMSIS/Include
|
||||||
|
|
||||||
|
|
||||||
|
# compile gcc flags
|
||||||
|
ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections
|
||||||
|
|
||||||
|
CFLAGS += $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPT) -Wall -fdata-sections -ffunction-sections
|
||||||
|
|
||||||
|
ifeq ($(DEBUG), 1)
|
||||||
|
CFLAGS += -g -gdwarf-2
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
# Generate dependency information
|
||||||
|
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"
|
||||||
|
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# LDFLAGS
|
||||||
|
#######################################
|
||||||
|
# link script
|
||||||
|
LDSCRIPT = stm32h7a3zitx_flash.ld
|
||||||
|
|
||||||
|
# libraries
|
||||||
|
LIBS = -lc -lm -lnosys
|
||||||
|
LIBDIR =
|
||||||
|
LDFLAGS = $(MCU) -specs=nano.specs -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
|
||||||
|
|
||||||
|
# default action: build all
|
||||||
|
all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin
|
||||||
|
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# build the application
|
||||||
|
#######################################
|
||||||
|
# list of objects
|
||||||
|
OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
|
||||||
|
vpath %.c $(sort $(dir $(C_SOURCES)))
|
||||||
|
# list of ASM program objects
|
||||||
|
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
|
||||||
|
vpath %.s $(sort $(dir $(ASM_SOURCES)))
|
||||||
|
OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASMM_SOURCES:.S=.o)))
|
||||||
|
vpath %.S $(sort $(dir $(ASMM_SOURCES)))
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
|
||||||
|
$(CC) -c $(CFLAGS) -Wa,-a,-ad,-alms=$(BUILD_DIR)/$(notdir $(<:.c=.lst)) $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
|
||||||
|
$(AS) -c $(CFLAGS) $< -o $@
|
||||||
|
$(BUILD_DIR)/%.o: %.S Makefile | $(BUILD_DIR)
|
||||||
|
$(AS) -c $(CFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) Makefile
|
||||||
|
$(CC) $(OBJECTS) $(LDFLAGS) -o $@
|
||||||
|
$(SZ) $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
|
||||||
|
$(HEX) $< $@
|
||||||
|
|
||||||
|
$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
|
||||||
|
$(BIN) $< $@
|
||||||
|
|
||||||
|
$(BUILD_DIR):
|
||||||
|
mkdir $@
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# clean up
|
||||||
|
#######################################
|
||||||
|
clean:
|
||||||
|
-rm -fR $(BUILD_DIR)
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# dependencies
|
||||||
|
#######################################
|
||||||
|
-include $(wildcard $(BUILD_DIR)/*.d)
|
||||||
|
|
||||||
|
# *** EOF ***
|
112
Software/STM32-for-VSCode.config.yaml
Normal file
112
Software/STM32-for-VSCode.config.yaml
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
# Configuration file for the STM32 for VSCode extension
|
||||||
|
# Arrays can be inputted in two ways. One is: [entry_1, entry_2, ..., entry_final]
|
||||||
|
# or by adding an indented list below the variable name e.g.:
|
||||||
|
# VARIABLE:
|
||||||
|
# - entry_1
|
||||||
|
# - entry_2
|
||||||
|
|
||||||
|
# The project name
|
||||||
|
target: FT23_Charger
|
||||||
|
# Can be C or C++
|
||||||
|
language: C
|
||||||
|
|
||||||
|
optimization: Og
|
||||||
|
|
||||||
|
# MCU settings
|
||||||
|
targetMCU: stm32h7x
|
||||||
|
cpu: cortex-m7 # type of cpu e.g. cortex-m4
|
||||||
|
fpu: fpv5-d16 # Defines how floating points are defined. Can be left empty.
|
||||||
|
floatAbi: -mfloat-abi=hard
|
||||||
|
ldscript: stm32h7a3zitx_flash.ld # linker script
|
||||||
|
|
||||||
|
# Compiler definitions. The -D prefix for the compiler will be automatically added.
|
||||||
|
cDefinitions: []
|
||||||
|
cxxDefinitions: []
|
||||||
|
asDefinitions: []
|
||||||
|
|
||||||
|
# Compiler definition files. you can add a single files or an array of files for different definitions.
|
||||||
|
# The file is expected to have a definition each new line.
|
||||||
|
# This allows to include for example a .definition file which can be ignored in git and can contain
|
||||||
|
# This can be convenient for passing along secrets at compile time, or generating a file for per device setup.
|
||||||
|
cDefinitionsFile:
|
||||||
|
cxxDefinitionsFile:
|
||||||
|
asDefinitionsFile:
|
||||||
|
|
||||||
|
# Compiler flags
|
||||||
|
cFlags:
|
||||||
|
- -Wall
|
||||||
|
- -fdata-sections
|
||||||
|
- -ffunction-sections
|
||||||
|
|
||||||
|
cxxFlags:
|
||||||
|
- -fno-rtti
|
||||||
|
- -fno-exceptions
|
||||||
|
|
||||||
|
assemblyFlags:
|
||||||
|
- -Wall
|
||||||
|
- -fdata-sections
|
||||||
|
- -ffunction-sections
|
||||||
|
|
||||||
|
linkerFlags:
|
||||||
|
- -Wl,--print-memory-usage
|
||||||
|
|
||||||
|
|
||||||
|
# libraries to be included. The -l prefix to the library will be automatically added.
|
||||||
|
libraries:
|
||||||
|
- c
|
||||||
|
- m
|
||||||
|
|
||||||
|
# Library directories. Folders can be added here that contain custom libraries.
|
||||||
|
libraryDirectories: []
|
||||||
|
|
||||||
|
# Files or folders that will be excluded from compilation.
|
||||||
|
# Glob patterns (https://www.wikiwand.com/en/Glob_(programming)) can be used.
|
||||||
|
# Do mind that double stars are reserved in yaml
|
||||||
|
# these should be escaped with a: \ or the name should be in double quotes e.g. "**.test.**"
|
||||||
|
excludes:
|
||||||
|
- "**/Examples/**"
|
||||||
|
- "**/examples/**"
|
||||||
|
- "**/Example/**"
|
||||||
|
- "**/example/**"
|
||||||
|
- "**_template.*"
|
||||||
|
|
||||||
|
|
||||||
|
# Include directories (directories containing .h or .hpp files)
|
||||||
|
# If a CubeMX makefile is present it will automatically include the include directories from that makefile.
|
||||||
|
includeDirectories:
|
||||||
|
- Inc/**
|
||||||
|
- Core/Inc/**
|
||||||
|
- Core/Lib/**
|
||||||
|
- Src/**
|
||||||
|
- Core/Src/**
|
||||||
|
- Core/Lib/**
|
||||||
|
|
||||||
|
|
||||||
|
# Files that should be included in the compilation.
|
||||||
|
# If a CubeMX makefile is present it will automatically include the c and cpp/cxx files from that makefile.
|
||||||
|
# Glob patterns (https://www.wikiwand.com/en/Glob_(programming)) can be used.
|
||||||
|
# Do mind that double stars are reserved in yaml
|
||||||
|
# these should be escaped with a: \ or the name should be in double quotes e.g. "HARDWARE_DRIVER*.c"
|
||||||
|
sourceFiles:
|
||||||
|
- Src/**
|
||||||
|
- Core/Src/**
|
||||||
|
- Core/Lib/**
|
||||||
|
|
||||||
|
|
||||||
|
# When no makefile is present it will show a warning pop-up.
|
||||||
|
# However when compilation without the CubeMX Makefile is desired, this can be turned of.
|
||||||
|
suppressMakefileWarning: false
|
||||||
|
|
||||||
|
# Custom makefile rules
|
||||||
|
# Here custom makefile rules can be added to the STM32Make.make file
|
||||||
|
# an example of how this can be used is commented out below.
|
||||||
|
customMakefileRules:
|
||||||
|
# - command: sayhello
|
||||||
|
# rule: echo "hello"
|
||||||
|
# dependsOn: $(BUILD_DIR)/$(TARGET).elf # can be left out
|
||||||
|
|
||||||
|
# Additional flags which will be used when invoking the make command
|
||||||
|
makeFlags:
|
||||||
|
# - -O # use this option when the output of make is mixed up only works for make version 4.0 and upwards
|
||||||
|
# - --silent # use this option to silence the output of the build
|
||||||
|
|
@ -1,181 +0,0 @@
|
|||||||
/*
|
|
||||||
******************************************************************************
|
|
||||||
**
|
|
||||||
** File : LinkerScript.ld
|
|
||||||
**
|
|
||||||
** Author : STM32CubeIDE
|
|
||||||
**
|
|
||||||
** Abstract : Linker script for STM32H7 series
|
|
||||||
** 1024Kbytes RAM_EXEC and 128Kbytes RAM
|
|
||||||
**
|
|
||||||
** Set heap size, stack size and stack location according
|
|
||||||
** to application requirements.
|
|
||||||
**
|
|
||||||
** Set memory bank area and size if external memory is used.
|
|
||||||
**
|
|
||||||
** Target : STMicroelectronics STM32
|
|
||||||
**
|
|
||||||
** Distribution: The file is distributed as is, without any warranty
|
|
||||||
** of any kind.
|
|
||||||
**
|
|
||||||
*****************************************************************************
|
|
||||||
** @attention
|
|
||||||
**
|
|
||||||
** Copyright (c) 2020 STMicroelectronics.
|
|
||||||
** All rights reserved.
|
|
||||||
**
|
|
||||||
** This software component is licensed by ST under BSD 3-Clause license,
|
|
||||||
** the "License"; You may not use this file except in compliance with the
|
|
||||||
** License. You may obtain a copy of the License at:
|
|
||||||
** opensource.org/licenses/BSD-3-Clause
|
|
||||||
**
|
|
||||||
****************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Entry Point */
|
|
||||||
ENTRY(Reset_Handler)
|
|
||||||
|
|
||||||
/* Highest address of the user mode stack */
|
|
||||||
_estack = 0x20020000; /* end of RAM */
|
|
||||||
/* Generate a link error if heap and stack don't fit into RAM */
|
|
||||||
_Min_Heap_Size = 0x200 ; /* required amount of heap */
|
|
||||||
_Min_Stack_Size = 0x400 ; /* required amount of stack */
|
|
||||||
|
|
||||||
/* Specify the memory areas */
|
|
||||||
MEMORY
|
|
||||||
{
|
|
||||||
RAM_EXEC (xrw) : ORIGIN = 0x24000000, LENGTH = 1024K
|
|
||||||
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
|
|
||||||
AHB_SRAM (xrw) : ORIGIN = 0x30000000, LENGTH = 128K
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Define output sections */
|
|
||||||
SECTIONS
|
|
||||||
{
|
|
||||||
/* The startup code goes first into RAM_EXEC */
|
|
||||||
.isr_vector :
|
|
||||||
{
|
|
||||||
. = ALIGN(4);
|
|
||||||
KEEP(*(.isr_vector)) /* Startup code */
|
|
||||||
. = ALIGN(4);
|
|
||||||
} >RAM_EXEC
|
|
||||||
|
|
||||||
/* The program code and other data goes into RAM_EXEC */
|
|
||||||
.text :
|
|
||||||
{
|
|
||||||
. = ALIGN(4);
|
|
||||||
*(.text) /* .text sections (code) */
|
|
||||||
*(.text*) /* .text* sections (code) */
|
|
||||||
*(.glue_7) /* glue arm to thumb code */
|
|
||||||
*(.glue_7t) /* glue thumb to arm code */
|
|
||||||
*(.eh_frame)
|
|
||||||
*(.RamFunc) /* .RamFunc sections */
|
|
||||||
*(.RamFunc*) /* .RamFunc* sections */
|
|
||||||
|
|
||||||
KEEP (*(.init))
|
|
||||||
KEEP (*(.fini))
|
|
||||||
|
|
||||||
. = ALIGN(4);
|
|
||||||
_etext = .; /* define a global symbols at end of code */
|
|
||||||
} >RAM_EXEC
|
|
||||||
|
|
||||||
/* Constant data goes into RAM_EXEC */
|
|
||||||
.rodata :
|
|
||||||
{
|
|
||||||
. = ALIGN(4);
|
|
||||||
*(.rodata) /* .rodata sections (constants, strings, etc.) */
|
|
||||||
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
|
|
||||||
. = ALIGN(4);
|
|
||||||
} >RAM_EXEC
|
|
||||||
|
|
||||||
.ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >RAM_EXEC
|
|
||||||
.ARM : {
|
|
||||||
__exidx_start = .;
|
|
||||||
*(.ARM.exidx*)
|
|
||||||
__exidx_end = .;
|
|
||||||
} >RAM_EXEC
|
|
||||||
|
|
||||||
.preinit_array :
|
|
||||||
{
|
|
||||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
|
||||||
KEEP (*(.preinit_array*))
|
|
||||||
PROVIDE_HIDDEN (__preinit_array_end = .);
|
|
||||||
} >RAM_EXEC
|
|
||||||
.init_array :
|
|
||||||
{
|
|
||||||
PROVIDE_HIDDEN (__init_array_start = .);
|
|
||||||
KEEP (*(SORT(.init_array.*)))
|
|
||||||
KEEP (*(.init_array*))
|
|
||||||
PROVIDE_HIDDEN (__init_array_end = .);
|
|
||||||
} >RAM_EXEC
|
|
||||||
.fini_array :
|
|
||||||
{
|
|
||||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
|
||||||
KEEP (*(SORT(.fini_array.*)))
|
|
||||||
KEEP (*(.fini_array*))
|
|
||||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
|
||||||
} >RAM_EXEC
|
|
||||||
|
|
||||||
/* used by the startup to initialize data */
|
|
||||||
_sidata = LOADADDR(.data);
|
|
||||||
|
|
||||||
/* Initialized data sections goes into RAM, load LMA copy after code */
|
|
||||||
.data :
|
|
||||||
{
|
|
||||||
. = ALIGN(4);
|
|
||||||
_sdata = .; /* create a global symbol at data start */
|
|
||||||
*(.data) /* .data sections */
|
|
||||||
*(.data*) /* .data* sections */
|
|
||||||
|
|
||||||
. = ALIGN(4);
|
|
||||||
_edata = .; /* define a global symbol at data end */
|
|
||||||
} >RAM AT> RAM_EXEC
|
|
||||||
|
|
||||||
.customdata:
|
|
||||||
{
|
|
||||||
. = ALIGN(4);
|
|
||||||
_scustomdata = .; /* create a global symbol at data start */
|
|
||||||
*(.customdata) /* .data sections */
|
|
||||||
*(.customdata*) /* .data* sections */
|
|
||||||
|
|
||||||
. = ALIGN(4);
|
|
||||||
_ecustomdata = .; /* define a global symbol at data end */
|
|
||||||
} > AHB_SRAM
|
|
||||||
/* Uninitialized data section */
|
|
||||||
. = ALIGN(4);
|
|
||||||
.bss :
|
|
||||||
{
|
|
||||||
/* This is used by the startup in order to initialize the .bss secion */
|
|
||||||
_sbss = .; /* define a global symbol at bss start */
|
|
||||||
__bss_start__ = _sbss;
|
|
||||||
*(.bss)
|
|
||||||
*(.bss*)
|
|
||||||
*(COMMON)
|
|
||||||
|
|
||||||
. = ALIGN(4);
|
|
||||||
_ebss = .; /* define a global symbol at bss end */
|
|
||||||
__bss_end__ = _ebss;
|
|
||||||
} >RAM
|
|
||||||
|
|
||||||
/* User_heap_stack section, used to check that there is enough RAM left */
|
|
||||||
._user_heap_stack :
|
|
||||||
{
|
|
||||||
. = ALIGN(8);
|
|
||||||
PROVIDE ( end = . );
|
|
||||||
PROVIDE ( _end = . );
|
|
||||||
. = . + _Min_Heap_Size;
|
|
||||||
. = . + _Min_Stack_Size;
|
|
||||||
. = ALIGN(8);
|
|
||||||
} >RAM
|
|
||||||
|
|
||||||
|
|
||||||
/* Remove information from the standard libraries */
|
|
||||||
/DISCARD/ :
|
|
||||||
{
|
|
||||||
libc.a ( * )
|
|
||||||
libm.a ( * )
|
|
||||||
libgcc.a ( * )
|
|
||||||
}
|
|
||||||
|
|
||||||
.ARM.attributes 0 : { *(.ARM.attributes) }
|
|
||||||
}
|
|
375
Software/STM32Make.make
Normal file
375
Software/STM32Make.make
Normal file
@ -0,0 +1,375 @@
|
|||||||
|
##########################################################################################################################
|
||||||
|
# File automatically-generated by STM32forVSCode
|
||||||
|
##########################################################################################################################
|
||||||
|
|
||||||
|
# ------------------------------------------------
|
||||||
|
# Generic Makefile (based on gcc)
|
||||||
|
#
|
||||||
|
# ChangeLog :
|
||||||
|
# 2024-04-27 - Added env file inclusion.
|
||||||
|
# Added way to overide: build directory, target name and optimisation.
|
||||||
|
# Added GCC_PATH by env file to not make the makefile machine dependent.
|
||||||
|
# Currently folder structure in build directory is preserved
|
||||||
|
# Switching of debug/release build output folder now happens based on debug flag
|
||||||
|
# 2017-02-10 - Several enhancements + project update mode
|
||||||
|
# 2015-07-22 - first version
|
||||||
|
# ------------------------------------------------
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Environment Variables
|
||||||
|
######################################
|
||||||
|
# Imports the environment file in which the compiler and other tooling is set
|
||||||
|
# for the build machine.
|
||||||
|
# This can also be used to overwrite some makefile variables
|
||||||
|
file_exists = $(or $(and $(wildcard $(1)),1),0)
|
||||||
|
ifeq ($(call file_exists,.stm32env),1)
|
||||||
|
include .stm32env
|
||||||
|
endif
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Target
|
||||||
|
######################################
|
||||||
|
# This is the name of the embedded target which will be build
|
||||||
|
# The final file name will also have debug or release appended to it.
|
||||||
|
TARGET ?= FT23_Charger
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Build directories
|
||||||
|
#######################################
|
||||||
|
# Build path can be overwritten when calling make or setting the environment variable
|
||||||
|
# in .stm32env
|
||||||
|
|
||||||
|
BUILD_DIRECTORY ?= build
|
||||||
|
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# Optimization
|
||||||
|
######################################
|
||||||
|
# Optimization is switched based upon the DEBUG variable. If set to 1
|
||||||
|
# it will be build in debug mode with the Og optimization flag (optimized for debugging).
|
||||||
|
# If set to 0 (false) then by default the variable is used in the configuration yaml
|
||||||
|
# This can also be overwritten using the environment variable or by overwriting it
|
||||||
|
# by calling make with the OPTIMIZATION variable e.g.:
|
||||||
|
# make -f STM32Make.make -j 16 OPTIMIZATION=Os
|
||||||
|
|
||||||
|
# variable which determines if it is a debug build
|
||||||
|
DEBUG ?= 1
|
||||||
|
|
||||||
|
# debug flags when debug is defined
|
||||||
|
OPTIMIZATION ?= -Og
|
||||||
|
|
||||||
|
RELEASE_DIRECTORY = $(BUILD_DIRECTORY)/debug
|
||||||
|
ifeq ($(DEBUG),1)
|
||||||
|
# Sets debugging optimization -Og and the debug information output
|
||||||
|
OPTIMIZATION_FLAGS += -Og -g -gdwarf -ggdb
|
||||||
|
$(TARGET) := $(TARGET)-debug
|
||||||
|
RELEASE_DIRECTORY := $(BUILD_DIRECTORY)/debug
|
||||||
|
else
|
||||||
|
OPTIMIZATION_FLAGS += $(OPTIMIZATION)
|
||||||
|
$(TARGET) := $(TARGET)-release
|
||||||
|
RELEASE_DIRECTORY := $(BUILD_DIRECTORY)/release
|
||||||
|
endif
|
||||||
|
|
||||||
|
######################################
|
||||||
|
# source
|
||||||
|
######################################
|
||||||
|
# C sources
|
||||||
|
C_SOURCES = \
|
||||||
|
Core/Src/main.c \
|
||||||
|
Core/Src/stm32h7xx_hal_msp.c \
|
||||||
|
Core/Src/stm32h7xx_it.c \
|
||||||
|
Core/Src/syscalls.c \
|
||||||
|
Core/Src/sysmem.c \
|
||||||
|
Core/Src/system_stm32h7xx.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_cortex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_dma_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_exti.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_flash_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_gpio.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_hsem.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_i2c_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_ltdc_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mdma.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mmc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_mmc_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_nand.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_nor.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pcd_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_pwr_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_rcc_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sd.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sd_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sdram.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_sram.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_uart_ex.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_delayblock.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_fmc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_sdmmc.c \
|
||||||
|
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_ll_usb.c
|
||||||
|
|
||||||
|
|
||||||
|
CXX_SOURCES = \
|
||||||
|
|
||||||
|
|
||||||
|
# ASM sources
|
||||||
|
ASM_SOURCES = \
|
||||||
|
startup_stm32h7a3xx.s
|
||||||
|
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# Tools
|
||||||
|
#######################################
|
||||||
|
ARM_PREFIX = arm-none-eabi-
|
||||||
|
POSTFIX = "
|
||||||
|
PREFIX = "
|
||||||
|
# The gcc compiler bin path can be defined in the make command via ARM_GCC_PATH variable (e.g.: make ARM_GCC_PATH=xxx)
|
||||||
|
# or it can be added to the PATH environment variable.
|
||||||
|
# By default the variable be used from the environment file: .stm32env.
|
||||||
|
# if it is not defined
|
||||||
|
|
||||||
|
ifdef ARM_GCC_PATH
|
||||||
|
CC = $(PREFIX)$(ARM_GCC_PATH)/$(ARM_PREFIX)gcc$(POSTFIX)
|
||||||
|
CXX = $(PREFIX)$(ARM_GCC_PATH)/$(ARM_PREFIX)g++$(POSTFIX)
|
||||||
|
AS = $(PREFIX)$(ARM_GCC_PATH)/$(ARM_PREFIX)gcc$(POSTFIX) -x assembler-with-cpp
|
||||||
|
CP = $(PREFIX)$(ARM_GCC_PATH)/$(ARM_PREFIX)objcopy$(POSTFIX)
|
||||||
|
SZ = $(PREFIX)$(ARM_GCC_PATH)/$(ARM_PREFIX)size$(POSTFIX)
|
||||||
|
DP = $(PREFIX)$(ARM_GCC_PATH)/$(ARM_PREFIX)objdump$(POSTFIX)
|
||||||
|
else
|
||||||
|
CC ?= $(ARM_PREFIX)gcc
|
||||||
|
CXX ?= $(ARM_PREFIX)g++$
|
||||||
|
AS ?= $(ARM_PREFIX)gcc -x assembler-with-cpp
|
||||||
|
CP ?= $(ARM_PREFIX)objcopy
|
||||||
|
SZ ?= $(ARM_PREFIX)size
|
||||||
|
DP ?= $(ARM_PREFIX)objdump
|
||||||
|
endif
|
||||||
|
|
||||||
|
HEX = $(CP) -O ihex
|
||||||
|
BIN = $(CP) -O binary -S
|
||||||
|
LSS = $(DP) -h -S
|
||||||
|
|
||||||
|
|
||||||
|
REMOVE_DIRECTORY_COMMAND = rm -fR
|
||||||
|
mkdir_function = mkdir -p $(1)
|
||||||
|
ifeq ($(OS),Windows_NT)
|
||||||
|
convert_to_windows_path = $(strip $(subst /,\,$(patsubst %/,%,$(1))))
|
||||||
|
REMOVE_DIRECTORY_COMMAND = cmd /c rd /s /q
|
||||||
|
mkdir_function = cmd /e:on /c if not exist $(call convert_to_windows_path,$(1)) md $(call convert_to_windows_path,$(1))
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
# Flash and debug tools
|
||||||
|
# Default is openocd however will be gotten from the env file when existing
|
||||||
|
OPENOCD ?= openocd
|
||||||
|
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# CFLAGS
|
||||||
|
#######################################
|
||||||
|
# cpu
|
||||||
|
CPU = -mcpu=cortex-m7
|
||||||
|
|
||||||
|
# fpu
|
||||||
|
FPU = -mfpu=fpv5-d16
|
||||||
|
|
||||||
|
# float-abi
|
||||||
|
FLOAT-ABI = -mfloat-abi=hard
|
||||||
|
|
||||||
|
# mcu
|
||||||
|
MCU = $(CPU) -mthumb $(FPU) $(FLOAT-ABI)
|
||||||
|
|
||||||
|
# macros for gcc
|
||||||
|
# AS defines
|
||||||
|
AS_DEFS =
|
||||||
|
|
||||||
|
# C defines
|
||||||
|
C_DEFS = \
|
||||||
|
-DSTM32H7A3xx \
|
||||||
|
-DUSE_HAL_DRIVER \
|
||||||
|
-DUSE_PWR_LDO_SUPPLY
|
||||||
|
|
||||||
|
|
||||||
|
# CXX defines
|
||||||
|
CXX_DEFS = \
|
||||||
|
-DSTM32H7A3xx \
|
||||||
|
-DUSE_HAL_DRIVER \
|
||||||
|
-DUSE_PWR_LDO_SUPPLY
|
||||||
|
|
||||||
|
|
||||||
|
# AS includes
|
||||||
|
AS_INCLUDES = \
|
||||||
|
|
||||||
|
# C includes
|
||||||
|
C_INCLUDES = \
|
||||||
|
-ICore/Inc \
|
||||||
|
-IDrivers/CMSIS/Device/ST/STM32H7xx/Include \
|
||||||
|
-IDrivers/CMSIS/Include \
|
||||||
|
-IDrivers/STM32H7xx_HAL_Driver/Inc \
|
||||||
|
-IDrivers/STM32H7xx_HAL_Driver/Inc/Legacy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# compile gcc flags
|
||||||
|
ASFLAGS = $(MCU) $(AS_DEFS) $(AS_INCLUDES) $(C_INCLUDES) $(C_DEFS) $(OPTIMIZATION_FLAGS)
|
||||||
|
|
||||||
|
CFLAGS = $(MCU) $(C_DEFS) $(C_INCLUDES) $(OPTIMIZATION_FLAGS)
|
||||||
|
|
||||||
|
CXXFLAGS = $(MCU) $(CXX_DEFS) $(C_INCLUDES) $(OPTIMIZATION_FLAGS)
|
||||||
|
|
||||||
|
# Add additional flags
|
||||||
|
CFLAGS += -Wall -fdata-sections -ffunction-sections
|
||||||
|
ASFLAGS += -Wall -fdata-sections -ffunction-sections
|
||||||
|
CXXFLAGS += -fno-exceptions -fno-rtti
|
||||||
|
|
||||||
|
# Generate dependency information
|
||||||
|
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"
|
||||||
|
CXXFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"
|
||||||
|
|
||||||
|
# Output a list file for the compiled source file.
|
||||||
|
# This is a representative of the source code in assembly
|
||||||
|
ASSEMBLER_LIST_OUTPUT_FLAG = -Wa,-a,-ad,-alms=$(call add_release_directory,$<,lst)
|
||||||
|
CFLAGS += $(ASSEMBLER_LIST_OUTPUT_FLAG)
|
||||||
|
CXXFLAGS += $(ASSEMBLER_LIST_OUTPUT_FLAG)
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# LDFLAGS
|
||||||
|
#######################################
|
||||||
|
# link script
|
||||||
|
LDSCRIPT = stm32h7a3zitx_flash.ld
|
||||||
|
|
||||||
|
# libraries
|
||||||
|
LIBS = -lc -lm -lnosys
|
||||||
|
LIBDIR = \
|
||||||
|
|
||||||
|
|
||||||
|
# Additional LD Flags from config file
|
||||||
|
ADDITIONALLDFLAGS = -Wl,--print-memory-usage -specs=nano.specs
|
||||||
|
|
||||||
|
LDFLAGS = $(MCU) $(ADDITIONALLDFLAGS) -T$(LDSCRIPT) $(LIBDIR) $(LIBS) -Wl,-Map=$(BUILD_DIRECTORY)/$(TARGET).map,--cref -Wl,--gc-sections
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# build the application
|
||||||
|
#######################################
|
||||||
|
add_release_directory = $(sort $(addprefix $(RELEASE_DIRECTORY)/,$(addsuffix .$(2),$(basename $(notdir $(1))))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
OBJECTS = $(call add_release_directory,$(C_SOURCES),o)
|
||||||
|
OBJECTS += $(call add_release_directory,$(CXX_SOURCES),o)
|
||||||
|
OBJECTS += $(call add_release_directory,$(ASM_SOURCES),o)
|
||||||
|
vpath %.c $(sort $(dir $(C_SOURCES)))
|
||||||
|
vpath %.cc $(sort $(dir $(CXX_SOURCES)))
|
||||||
|
vpath %.cp $(sort $(dir $(CXX_SOURCES)))
|
||||||
|
vpath %.cxx $(sort $(dir $(CXX_SOURCES)))
|
||||||
|
vpath %.cpp $(sort $(dir $(CXX_SOURCES)))
|
||||||
|
vpath %.c++ $(sort $(dir $(CXX_SOURCES)))
|
||||||
|
vpath %.C $(sort $(dir $(CXX_SOURCES)))
|
||||||
|
vpath %.CPP $(sort $(dir $(CXX_SOURCES)))
|
||||||
|
vpath %.s $(sort $(dir $(ASM_SOURCES)))
|
||||||
|
vpath %.S $(sort $(dir $(ASM_SOURCES)))
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# all
|
||||||
|
#######################################
|
||||||
|
# note needs to be located as the first rule to be the default build rule
|
||||||
|
# default action: build all
|
||||||
|
all: $(RELEASE_DIRECTORY)/$(TARGET).elf $(RELEASE_DIRECTORY)/$(TARGET).hex $(RELEASE_DIRECTORY)/$(TARGET).bin $(RELEASE_DIRECTORY)/$(TARGET).lss
|
||||||
|
|
||||||
|
|
||||||
|
# C build
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.c STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(CC) -c $(CFLAGS) $< -o $@
|
||||||
|
|
||||||
|
# C++ build
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.cc STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(CXX) -c $(CXXFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.cp STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(CXX) -c $(CXXFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.cxx STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(CXX) -c $(CXXFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.cpp STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(CXX) -c $(CXXFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.c++ STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(CXX) -c $(CXXFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.C STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(CXX) -c $(CXXFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.CPP STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(CXX) -c $(CXXFLAGS) $< -o $@
|
||||||
|
|
||||||
|
#Assembly build
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.s STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(AS) -c $(ASFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.S STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(AS) -c $(ASFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.o: %.sx STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
$(AS) -c $(ASFLAGS) $< -o $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/$(TARGET).elf: $(OBJECTS) STM32Make.make | $(RELEASE_DIRECTORY)
|
||||||
|
@echo $(OBJECTS) > $@.in
|
||||||
|
$(CC) @$@.in $(LDFLAGS) -o $@
|
||||||
|
$(SZ) $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.hex: $(RELEASE_DIRECTORY)/%.elf | $(RELEASE_DIRECTORY)
|
||||||
|
$(HEX) $< $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.bin: $(RELEASE_DIRECTORY)/%.elf | $(RELEASE_DIRECTORY)
|
||||||
|
$(BIN) $< $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY)/%.lss: $(RELEASE_DIRECTORY)/%.elf | $(RELEASE_DIRECTORY)
|
||||||
|
$(LSS) $< > $@
|
||||||
|
|
||||||
|
$(RELEASE_DIRECTORY):
|
||||||
|
$(call mkdir_function, $@)
|
||||||
|
|
||||||
|
$(BUILD_DIRECTORY): | $(RELEASE_DIRECTORY)
|
||||||
|
$(call mkdir_function, $@)
|
||||||
|
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# flash
|
||||||
|
#######################################
|
||||||
|
flash: all
|
||||||
|
"$(OPENOCD)" -f ./openocd.cfg -c "program $(RELEASE_DIRECTORY)/$(TARGET).elf verify reset exit"
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# erase
|
||||||
|
#######################################
|
||||||
|
erase: all
|
||||||
|
"$(OPENOCD)" -f ./openocd.cfg -c "init; reset halt; stm32h7x mass_erase 0; exit"
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# clean up
|
||||||
|
#######################################
|
||||||
|
clean:
|
||||||
|
$(REMOVE_DIRECTORY_COMMAND) $(BUILD_DIRECTORY)
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# custom makefile rules
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
|
||||||
|
#######################################
|
||||||
|
# dependencies
|
||||||
|
#######################################
|
||||||
|
-include $(wildcard $(RELEASE_DIRECTORY)/*.d)
|
||||||
|
|
||||||
|
# *** EOF ***
|
@ -1,74 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : app_touchgfx.c
|
|
||||||
******************************************************************************
|
|
||||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
|
||||||
* generated once! Delete this file from your project and re-generate code
|
|
||||||
* using STM32CubeMX or change this file manually to update it.
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
#include "app_touchgfx.h"
|
|
||||||
|
|
||||||
/* Private includes ----------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN Includes */
|
|
||||||
|
|
||||||
/* USER CODE END Includes */
|
|
||||||
|
|
||||||
/* Private define ------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* USER CODE BEGIN PD */
|
|
||||||
|
|
||||||
/* USER CODE END PD */
|
|
||||||
|
|
||||||
/* Private macro -------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN PM */
|
|
||||||
|
|
||||||
/* USER CODE END PM */
|
|
||||||
|
|
||||||
/* Private variables ---------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* USER CODE BEGIN PV */
|
|
||||||
|
|
||||||
/* USER CODE END PV */
|
|
||||||
|
|
||||||
/* Private function prototypes -----------------------------------------------*/
|
|
||||||
void touchgfx_init(void);
|
|
||||||
void touchgfx_components_init(void);
|
|
||||||
void touchgfx_taskEntry(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN PFP */
|
|
||||||
|
|
||||||
/* USER CODE END PFP */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize TouchGFX application
|
|
||||||
*/
|
|
||||||
void MX_TouchGFX_Init(void)
|
|
||||||
{
|
|
||||||
// Calling forward to touchgfx_init in C++ domain
|
|
||||||
touchgfx_components_init();
|
|
||||||
touchgfx_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TouchGFX application entry function
|
|
||||||
*/
|
|
||||||
void MX_TouchGFX_Process(void)
|
|
||||||
{
|
|
||||||
// Calling forward to touchgfx_taskEntry in C++ domain
|
|
||||||
touchgfx_taskEntry();
|
|
||||||
}
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,58 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : app_touchgfx.h
|
|
||||||
******************************************************************************
|
|
||||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
|
||||||
* generated once! Delete this file from your project and re-generate code
|
|
||||||
* using STM32CubeMX or change this file manually to update it.
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
|
||||||
#ifndef APP_TOUCHGFX_H
|
|
||||||
#define APP_TOUCHGFX_H
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN ET */
|
|
||||||
|
|
||||||
/* USER CODE END ET */
|
|
||||||
|
|
||||||
/* Exported constants --------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN EC */
|
|
||||||
|
|
||||||
/* USER CODE END EC */
|
|
||||||
|
|
||||||
/* Exported macro ------------------------------------------------------------*/
|
|
||||||
/* USER CODE BEGIN EM */
|
|
||||||
|
|
||||||
/* USER CODE END EM */
|
|
||||||
|
|
||||||
/* Exported functions prototypes ---------------------------------------------*/
|
|
||||||
void MX_TouchGFX_Init(void);
|
|
||||||
void MX_TouchGFX_Process(void);
|
|
||||||
|
|
||||||
/* USER CODE BEGIN EFP */
|
|
||||||
|
|
||||||
/* USER CODE END EFP */
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#endif /* APP_TOUCHGFX_H */
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,30 +0,0 @@
|
|||||||
|
|
||||||
{
|
|
||||||
"Application": {
|
|
||||||
"Name": "FT23_Charger",
|
|
||||||
"TouchGfxPath": "../Middlewares/ST/touchgfx",
|
|
||||||
"AvailableColorDepths": [ 24 ],
|
|
||||||
"AvailableLCDs":
|
|
||||||
{
|
|
||||||
"24": "LCD24bpp"
|
|
||||||
},
|
|
||||||
"AvailableResolutions": [
|
|
||||||
{
|
|
||||||
"Width": 1024,
|
|
||||||
"Height": 600
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"PostGenerateTargetCommand": "touchgfx update_project",
|
|
||||||
"Family": "STM32H7",
|
|
||||||
"SubFamily": "STM32H7A3/7B3",
|
|
||||||
"Platform": "m7",
|
|
||||||
"Toolchain": "STM32CubeIDE",
|
|
||||||
"ProjectFile": "../FT23_Charger.ioc",
|
|
||||||
"OptionalComponentsRoot": "../Middlewares/ST/touchgfx_components",
|
|
||||||
"OptionalComponents": [
|
|
||||||
],
|
|
||||||
"AdditionalFeatures": [
|
|
||||||
],
|
|
||||||
},
|
|
||||||
"Version": "4.21.0"
|
|
||||||
}
|
|
@ -1,92 +0,0 @@
|
|||||||
{
|
|
||||||
"Application": {
|
|
||||||
"Screens": [
|
|
||||||
{
|
|
||||||
"Name": "screen",
|
|
||||||
"Components": [
|
|
||||||
{
|
|
||||||
"Type": "Button",
|
|
||||||
"Name": "button1",
|
|
||||||
"X": 327,
|
|
||||||
"Y": 275,
|
|
||||||
"Width": 370,
|
|
||||||
"Height": 50,
|
|
||||||
"Pressed": "__generated\\alternate_theme_images_widgets_button_regular_height_50_large_round_pressed.png",
|
|
||||||
"Released": "__generated\\alternate_theme_images_widgets_button_regular_height_50_large_round_action.png",
|
|
||||||
"Preset": "alternate_theme\\presets\\button\\regular\\height_50\\large_round_action.json"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"Interactions": [
|
|
||||||
{
|
|
||||||
"InteractionName": "Interaction1",
|
|
||||||
"Trigger": {
|
|
||||||
"Type": "TriggerClicked",
|
|
||||||
"TriggerComponent": "button1"
|
|
||||||
},
|
|
||||||
"Action": {
|
|
||||||
"Type": "ActionNone"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"CustomActions": [
|
|
||||||
{
|
|
||||||
"Name": "action1"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"CustomContainerDefinitions": [],
|
|
||||||
"Name": "MyApplication",
|
|
||||||
"Resolution": {
|
|
||||||
"Width": 1024,
|
|
||||||
"Height": 600
|
|
||||||
},
|
|
||||||
"SelectedColorDepth": 24,
|
|
||||||
"StartupScreenName": "screen",
|
|
||||||
"SelectedStartupLanguage": "GB",
|
|
||||||
"TouchGfxPath": "../Middlewares/ST/touchgfx",
|
|
||||||
"UIPath": ".",
|
|
||||||
"AvailableColorDepths": [
|
|
||||||
24
|
|
||||||
],
|
|
||||||
"AvailableLCDs": {
|
|
||||||
"24": "LCD24bpp"
|
|
||||||
},
|
|
||||||
"AvailableSections": [
|
|
||||||
"ExtFlashSection",
|
|
||||||
"IntFlashSection"
|
|
||||||
],
|
|
||||||
"AvailableResolutions": [
|
|
||||||
{
|
|
||||||
"Width": 1024,
|
|
||||||
"Height": 600
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"PhysicalButtons": [],
|
|
||||||
"FrameworkFeatures": {
|
|
||||||
"LCD24bpp": {
|
|
||||||
"Id": "LCD24bpp",
|
|
||||||
"IsEnabled": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"GenerateAssetsCommand": "make -f simulator/gcc/Makefile assets -j8",
|
|
||||||
"PostGenerateCommand": "touchgfx update_project --project-file=simulator/msvs/Application.vcxproj",
|
|
||||||
"PostGenerateTargetCommand": "touchgfx update_project",
|
|
||||||
"CompileSimulatorCommand": "make -f simulator/gcc/Makefile -j8",
|
|
||||||
"RunSimulatorCommand": "build\\bin\\simulator.exe",
|
|
||||||
"LandscapeSkinX": 0,
|
|
||||||
"LandscapeSkinY": 0,
|
|
||||||
"PortraitSkinX": 0,
|
|
||||||
"PortraitSkinY": 0,
|
|
||||||
"DisplayOrientation": "Landscape",
|
|
||||||
"Family": "STM32H7",
|
|
||||||
"SubFamily": "STM32H7A3/7B3",
|
|
||||||
"Toolchain": "STM32CubeIDE",
|
|
||||||
"Platform": "m7",
|
|
||||||
"ProjectFile": "../FT23_Charger.ioc",
|
|
||||||
"OptionalComponentsRoot": "../Middlewares/ST/touchgfx_components",
|
|
||||||
"OptionalComponents": [],
|
|
||||||
"AdditionalFeatures": []
|
|
||||||
},
|
|
||||||
"Version": "4.24.2"
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
{
|
|
||||||
"image_configuration": {
|
|
||||||
"dither_algorithm": "2",
|
|
||||||
"alpha_dither": "yes",
|
|
||||||
"layout_rotation": "0",
|
|
||||||
"opaque_image_format": "RGB888",
|
|
||||||
"nonopaque_image_format": "ARGB8888",
|
|
||||||
"l8_compression": "no",
|
|
||||||
"rgb_compression": "no",
|
|
||||||
"section": "ExtFlashSection",
|
|
||||||
"extra_section": "ExtFlashSection",
|
|
||||||
"images": {}
|
|
||||||
},
|
|
||||||
"text_configuration": {
|
|
||||||
"remap": "yes",
|
|
||||||
"a4": "yes",
|
|
||||||
"binary_translations": "no",
|
|
||||||
"binary_fonts": "no",
|
|
||||||
"framebuffer_bpp": "24",
|
|
||||||
"font_format": "0"
|
|
||||||
}
|
|
||||||
}
|
|
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 1.9 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.2 KiB |
@ -1,160 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
|
|
||||||
<!--Types-->
|
|
||||||
<xs:simpleType name="direction" final="restriction" >
|
|
||||||
<xs:restriction base="xs:string">
|
|
||||||
<xs:enumeration value="LTR" />
|
|
||||||
<xs:enumeration value="RTL" />
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
<xs:simpleType name="alignment" final="restriction" >
|
|
||||||
<xs:restriction base="xs:string">
|
|
||||||
<xs:enumeration value="Left" />
|
|
||||||
<xs:enumeration value="LEFT" />
|
|
||||||
<xs:enumeration value="left" />
|
|
||||||
<xs:enumeration value="Center" />
|
|
||||||
<xs:enumeration value="CENTER" />
|
|
||||||
<xs:enumeration value="center" />
|
|
||||||
<xs:enumeration value="Right" />
|
|
||||||
<xs:enumeration value="RIGHT" />
|
|
||||||
<xs:enumeration value="right" />
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
<xs:simpleType name="bpp" final="restriction" >
|
|
||||||
<xs:restriction base="xs:string">
|
|
||||||
<xs:enumeration value="1" />
|
|
||||||
<xs:enumeration value="2" />
|
|
||||||
<xs:enumeration value="4" />
|
|
||||||
<xs:enumeration value="8" />
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
<xs:simpleType name="fallbackCharacter" final="restriction" >
|
|
||||||
<xs:restriction base="xs:string">
|
|
||||||
<xs:pattern value="|.|skip|(0[xX][0-9a-fA-F]{1,4})" />
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
<xs:simpleType name="ellipsisCharacter" final="restriction" >
|
|
||||||
<xs:restriction base="xs:string">
|
|
||||||
<xs:pattern value="|.|(0[xX][0-9a-fA-F]{1,4})" />
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
<xs:simpleType name="wildcardCharacterRanges" final="restriction" >
|
|
||||||
<xs:restriction base="xs:string">
|
|
||||||
<xs:pattern value="|(.-.|(0[xX][0-9a-fA-F]{1,4}|[0-9]{1,5})(-(0[xX][0-9a-fA-F]{1,4}|[0-9]{1,5}))?)(,(.-.|(0[xX][0-9a-fA-F]{1,4}|[0-9]{1,5})(-(0[xX][0-9a-fA-F]{1,4}|[0-9]{1,5}))?))*" />
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
<xs:simpleType name="validCppIdentifier" final="restriction" >
|
|
||||||
<xs:restriction base="xs:string">
|
|
||||||
<xs:pattern value="[a-zA-Z_][a-zA-Z0-9_]*" />
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
<xs:simpleType name="validIdentifier" final="restriction" >
|
|
||||||
<xs:restriction base="xs:string">
|
|
||||||
<xs:pattern value="[a-zA-Z0-9_]+" />
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
<xs:simpleType name="fontSize" final="restriction">
|
|
||||||
<xs:restriction base="xs:unsignedInt">
|
|
||||||
<xs:minInclusive value="1"/>
|
|
||||||
<xs:maxInclusive value="1000"/>
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
<xs:simpleType name="isVector" final="restriction" >
|
|
||||||
<xs:restriction base="xs:string">
|
|
||||||
<xs:enumeration value="yes" />
|
|
||||||
<xs:enumeration value="no" />
|
|
||||||
</xs:restriction>
|
|
||||||
</xs:simpleType>
|
|
||||||
|
|
||||||
<!--TextDatabase specification-->
|
|
||||||
<xs:element name="TextDatabase">
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:sequence>
|
|
||||||
<xs:element name="Languages">
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:sequence>
|
|
||||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="Language">
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:attribute name="Id" type="validCppIdentifier" use="required" />
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
</xs:sequence>
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
<xs:sequence>
|
|
||||||
<xs:element name="Texts">
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:sequence>
|
|
||||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="TextGroup">
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:sequence>
|
|
||||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="Text">
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:sequence>
|
|
||||||
<xs:element minOccurs="1" maxOccurs="unbounded" name="Translation">
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:simpleContent>
|
|
||||||
<xs:extension base="xs:string">
|
|
||||||
<xs:attribute name="Language" type="validCppIdentifier" use="required" />
|
|
||||||
<xs:attribute name="Alignment" type="alignment" use="optional" />
|
|
||||||
</xs:extension>
|
|
||||||
</xs:simpleContent>
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
</xs:sequence>
|
|
||||||
<xs:attribute name="Id" type="validIdentifier" use="required" />
|
|
||||||
<xs:attribute name="Alignment" type="alignment" use="required" />
|
|
||||||
<xs:attribute name="TypographyId" type="validCppIdentifier" use="required" />
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
</xs:sequence>
|
|
||||||
<xs:attribute name="Id" type="validIdentifier" use="required" />
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
</xs:sequence>
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
</xs:sequence>
|
|
||||||
<xs:element name="Typographies">
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:sequence>
|
|
||||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="Typography">
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:sequence>
|
|
||||||
<xs:element minOccurs="0" maxOccurs="unbounded" name="LanguageSetting">
|
|
||||||
<xs:complexType>
|
|
||||||
<xs:attribute name="Language" type="validCppIdentifier" use="required" />
|
|
||||||
<xs:attribute name="Font" type="xs:string" use="required" />
|
|
||||||
<xs:attribute name="Size" type="fontSize" use="required" />
|
|
||||||
<xs:attribute name="Bpp" type="bpp" use="required" />
|
|
||||||
<xs:attribute name="IsVector" type="isVector" use="required" />
|
|
||||||
<xs:attribute name="Direction" type="direction" use="required" />
|
|
||||||
<xs:attribute name="FallbackCharacter" type="fallbackCharacter" use="optional" />
|
|
||||||
<xs:attribute name="WildcardCharacters" type="xs:string" use="optional" />
|
|
||||||
<xs:attribute name="WidgetWildcardCharacters" type="xs:string" use="optional" />
|
|
||||||
<xs:attribute name="WildcardCharacterRanges" type="wildcardCharacterRanges" use="optional" />
|
|
||||||
<xs:attribute name="EllipsisCharacter" type="ellipsisCharacter" use="optional" />
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
</xs:sequence>
|
|
||||||
<xs:attribute name="Id" type="validCppIdentifier" use="required" />
|
|
||||||
<xs:attribute name="Font" type="xs:string" use="required" />
|
|
||||||
<xs:attribute name="Size" type="fontSize" use="required" />
|
|
||||||
<xs:attribute name="Bpp" type="bpp" use="required" />
|
|
||||||
<xs:attribute name="IsVector" type="isVector" use="required" />
|
|
||||||
<xs:attribute name="Direction" type="direction" use="required" />
|
|
||||||
<xs:attribute name="FallbackCharacter" type="fallbackCharacter" use="optional" />
|
|
||||||
<xs:attribute name="WildcardCharacters" type="xs:string" use="optional" />
|
|
||||||
<xs:attribute name="WidgetWildcardCharacters" type="xs:string" use="optional" />
|
|
||||||
<xs:attribute name="WildcardCharacterRanges" type="wildcardCharacterRanges" use="optional" />
|
|
||||||
<xs:attribute name="EllipsisCharacter" type="ellipsisCharacter" use="optional" />
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
</xs:sequence>
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
</xs:sequence>
|
|
||||||
<xs:attribute name="Version" type="xs:string" use="required" />
|
|
||||||
</xs:complexType>
|
|
||||||
</xs:element>
|
|
||||||
</xs:schema>
|
|
@ -1,52 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : STM32TouchController.cpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
|
||||||
* generated once! Delete this file from your project and re-generate code
|
|
||||||
* using STM32CubeMX or change this file manually to update it.
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
/* USER CODE END Header */
|
|
||||||
|
|
||||||
/* USER CODE BEGIN STM32TouchController */
|
|
||||||
|
|
||||||
#include <STM32TouchController.hpp>
|
|
||||||
|
|
||||||
void STM32TouchController::init()
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Initialize touch controller and driver
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y)
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* By default sampleTouch returns false,
|
|
||||||
* return true if a touch has been detected, otherwise false.
|
|
||||||
*
|
|
||||||
* Coordinates are passed to the caller by reference by x and y.
|
|
||||||
*
|
|
||||||
* This function is called by the TouchGFX framework.
|
|
||||||
* By default sampleTouch is called every tick, this can be adjusted by HAL::setTouchSampleRate(int8_t);
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE END STM32TouchController */
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,72 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : STM32TouchController.hpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
|
||||||
* generated once! Delete this file from your project and re-generate code
|
|
||||||
* using STM32CubeMX or change this file manually to update it.
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
/* USER CODE END Header */
|
|
||||||
|
|
||||||
/* USER CODE BEGIN STM32TouchController */
|
|
||||||
|
|
||||||
#ifndef STM32TOUCHCONTROLLER_HPP
|
|
||||||
#define STM32TOUCHCONTROLLER_HPP
|
|
||||||
|
|
||||||
#include <platform/driver/touch/TouchController.hpp>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @class STM32TouchController
|
|
||||||
*
|
|
||||||
* @brief This class specializes TouchController Interface.
|
|
||||||
*
|
|
||||||
* @sa touchgfx::TouchController
|
|
||||||
*/
|
|
||||||
|
|
||||||
class STM32TouchController : public touchgfx::TouchController
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
|
|
||||||
STM32TouchController() {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void STM32TouchController::init() = 0;
|
|
||||||
*
|
|
||||||
* @brief Initializes touch controller.
|
|
||||||
*
|
|
||||||
* Initializes touch controller.
|
|
||||||
*/
|
|
||||||
virtual void init();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual bool STM32TouchController::sampleTouch(int32_t& x, int32_t& y) = 0;
|
|
||||||
*
|
|
||||||
* @brief Checks whether the touch screen is being touched, and if so, what coordinates.
|
|
||||||
*
|
|
||||||
* Checks whether the touch screen is being touched, and if so, what coordinates.
|
|
||||||
*
|
|
||||||
* @param [out] x The x position of the touch
|
|
||||||
* @param [out] y The y position of the touch
|
|
||||||
*
|
|
||||||
* @return True if a touch has been detected, otherwise false.
|
|
||||||
*/
|
|
||||||
virtual bool sampleTouch(int32_t& x, int32_t& y);
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // STM32TOUCHCONTROLLER_HPP
|
|
||||||
|
|
||||||
/* USER CODE END STM32TouchController */
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,176 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : TouchGFXGPIO.cpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
|
||||||
* generated once! Delete this file from your project and re-generate code
|
|
||||||
* using STM32CubeMX or change this file manually to update it.
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
/* USER CODE END Header */
|
|
||||||
|
|
||||||
#include <touchgfx/hal/GPIO.hpp>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* GPIO_ID Enum
|
|
||||||
* The signals represented by this enum are used by TouchGFX framework to signal internal events.
|
|
||||||
*
|
|
||||||
* VSYNC_FREQ, /// Pin is toggled at each VSYNC
|
|
||||||
* RENDER_TIME, /// Pin is high when frame rendering begins, low when finished
|
|
||||||
* FRAME_RATE, /// Pin is toggled when the frame buffers are swapped.
|
|
||||||
* MCU_ACTIVE /// Pin is high when framework is utilizing the MCU.
|
|
||||||
*
|
|
||||||
* Configure GPIO's with the same name as the GPIO_IDs above, as output, in CubeMX to export
|
|
||||||
* the signals for performance measuring. See support.touchgfx.com for further details.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* USER CODE BEGIN TouchGFXGPIO.cpp */
|
|
||||||
#include "main.h"
|
|
||||||
|
|
||||||
using namespace touchgfx;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Perform configuration of IO pins.
|
|
||||||
*/
|
|
||||||
void GPIO::init()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Sets a pin high.
|
|
||||||
*/
|
|
||||||
void GPIO::set(GPIO_ID id)
|
|
||||||
{
|
|
||||||
switch (id)
|
|
||||||
{
|
|
||||||
case GPIO::VSYNC_FREQ:
|
|
||||||
#if defined(VSYNC_FREQ_GPIO_Port) && defined(VSYNC_FREQ_Pin)
|
|
||||||
HAL_GPIO_WritePin(VSYNC_FREQ_GPIO_Port, VSYNC_FREQ_Pin, GPIO_PIN_SET);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::RENDER_TIME:
|
|
||||||
#if defined(RENDER_TIME_GPIO_Port) && defined(RENDER_TIME_Pin)
|
|
||||||
HAL_GPIO_WritePin(RENDER_TIME_GPIO_Port, RENDER_TIME_Pin, GPIO_PIN_SET);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::FRAME_RATE:
|
|
||||||
#if defined(FRAME_RATE_GPIO_Port) && defined(FRAME_RATE_Pin)
|
|
||||||
HAL_GPIO_WritePin(FRAME_RATE_GPIO_Port, FRAME_RATE_Pin, GPIO_PIN_SET);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::MCU_ACTIVE:
|
|
||||||
#if defined(MCU_ACTIVE_GPIO_Port) && defined(MCU_ACTIVE_Pin)
|
|
||||||
HAL_GPIO_WritePin(MCU_ACTIVE_GPIO_Port, MCU_ACTIVE_Pin, GPIO_PIN_SET);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Sets a pin low.
|
|
||||||
*/
|
|
||||||
void GPIO::clear(GPIO_ID id)
|
|
||||||
{
|
|
||||||
switch (id)
|
|
||||||
{
|
|
||||||
case GPIO::VSYNC_FREQ:
|
|
||||||
#if defined(VSYNC_FREQ_GPIO_Port) && defined(VSYNC_FREQ_Pin)
|
|
||||||
HAL_GPIO_WritePin(VSYNC_FREQ_GPIO_Port, VSYNC_FREQ_Pin, GPIO_PIN_RESET);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::RENDER_TIME:
|
|
||||||
#if defined(RENDER_TIME_GPIO_Port) && defined(RENDER_TIME_Pin)
|
|
||||||
HAL_GPIO_WritePin(RENDER_TIME_GPIO_Port, RENDER_TIME_Pin, GPIO_PIN_RESET);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::FRAME_RATE:
|
|
||||||
#if defined(FRAME_RATE_GPIO_Port) && defined(FRAME_RATE_Pin)
|
|
||||||
HAL_GPIO_WritePin(FRAME_RATE_GPIO_Port, FRAME_RATE_Pin, GPIO_PIN_RESET);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::MCU_ACTIVE:
|
|
||||||
#if defined(MCU_ACTIVE_GPIO_Port) && defined(MCU_ACTIVE_Pin)
|
|
||||||
HAL_GPIO_WritePin(MCU_ACTIVE_GPIO_Port, MCU_ACTIVE_Pin, GPIO_PIN_RESET);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Toggles a pin.
|
|
||||||
*/
|
|
||||||
void GPIO::toggle(GPIO_ID id)
|
|
||||||
{
|
|
||||||
switch (id)
|
|
||||||
{
|
|
||||||
case GPIO::VSYNC_FREQ:
|
|
||||||
#if defined(VSYNC_FREQ_GPIO_Port) && defined(VSYNC_FREQ_Pin)
|
|
||||||
HAL_GPIO_TogglePin(VSYNC_FREQ_GPIO_Port, VSYNC_FREQ_Pin);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::RENDER_TIME:
|
|
||||||
#if defined(RENDER_TIME_GPIO_Port) && defined(RENDER_TIME_Pin)
|
|
||||||
HAL_GPIO_TogglePin(RENDER_TIME_GPIO_Port, RENDER_TIME_Pin);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::FRAME_RATE:
|
|
||||||
#if defined(FRAME_RATE_GPIO_Port) && defined(FRAME_RATE_Pin)
|
|
||||||
HAL_GPIO_TogglePin(FRAME_RATE_GPIO_Port, FRAME_RATE_Pin);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::MCU_ACTIVE:
|
|
||||||
#if defined(MCU_ACTIVE_GPIO_Port) && defined(MCU_ACTIVE_Pin)
|
|
||||||
HAL_GPIO_TogglePin(MCU_ACTIVE_GPIO_Port, MCU_ACTIVE_Pin);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Gets the state of a pin.
|
|
||||||
*/
|
|
||||||
bool GPIO::get(GPIO_ID id)
|
|
||||||
{
|
|
||||||
GPIO_PinState bitstatus = GPIO_PIN_RESET;
|
|
||||||
switch (id)
|
|
||||||
{
|
|
||||||
case GPIO::VSYNC_FREQ:
|
|
||||||
#if defined(VSYNC_FREQ_GPIO_Port) && defined(VSYNC_FREQ_Pin)
|
|
||||||
bitstatus = HAL_GPIO_ReadPin(VSYNC_FREQ_GPIO_Port, VSYNC_FREQ_Pin);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::RENDER_TIME:
|
|
||||||
#if defined(RENDER_TIME_GPIO_Port) && defined(RENDER_TIME_Pin)
|
|
||||||
bitstatus = HAL_GPIO_ReadPin(RENDER_TIME_GPIO_Port, RENDER_TIME_Pin);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::FRAME_RATE:
|
|
||||||
#if defined(FRAME_RATE_GPIO_Port) && defined(FRAME_RATE_Pin)
|
|
||||||
bitstatus = HAL_GPIO_ReadPin(FRAME_RATE_GPIO_Port, FRAME_RATE_Pin);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case GPIO::MCU_ACTIVE:
|
|
||||||
#if defined(MCU_ACTIVE_GPIO_Port) && defined(MCU_ACTIVE_Pin)
|
|
||||||
bitstatus = HAL_GPIO_ReadPin(MCU_ACTIVE_GPIO_Port, MCU_ACTIVE_Pin);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return (bitstatus == GPIO_PIN_SET);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE END TouchGFXGPIO.cpp */
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,163 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : TouchGFXHAL.cpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
|
||||||
* generated once! Delete this file from your project and re-generate code
|
|
||||||
* using STM32CubeMX or change this file manually to update it.
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
/* USER CODE END Header */
|
|
||||||
|
|
||||||
#include <TouchGFXHAL.hpp>
|
|
||||||
|
|
||||||
/* USER CODE BEGIN TouchGFXHAL.cpp */
|
|
||||||
|
|
||||||
using namespace touchgfx;
|
|
||||||
|
|
||||||
void TouchGFXHAL::initialize()
|
|
||||||
{
|
|
||||||
// Calling parent implementation of initialize().
|
|
||||||
//
|
|
||||||
// To overwrite the generated implementation, omit call to parent function
|
|
||||||
// and implemented needed functionality here.
|
|
||||||
// Please note, HAL::initialize() must be called to initialize the framework.
|
|
||||||
|
|
||||||
TouchGFXGeneratedHAL::initialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the frame buffer address used by the TFT controller.
|
|
||||||
*
|
|
||||||
* @return The address of the frame buffer currently being displayed on the TFT.
|
|
||||||
*/
|
|
||||||
uint16_t* TouchGFXHAL::getTFTFrameBuffer() const
|
|
||||||
{
|
|
||||||
// Calling parent implementation of getTFTFrameBuffer().
|
|
||||||
//
|
|
||||||
// To overwrite the generated implementation, omit call to parent function
|
|
||||||
// and implemented needed functionality here.
|
|
||||||
|
|
||||||
return TouchGFXGeneratedHAL::getTFTFrameBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the frame buffer address used by the TFT controller.
|
|
||||||
*
|
|
||||||
* @param [in] address New frame buffer address.
|
|
||||||
*/
|
|
||||||
void TouchGFXHAL::setTFTFrameBuffer(uint16_t* address)
|
|
||||||
{
|
|
||||||
// Calling parent implementation of setTFTFrameBuffer(uint16_t* address).
|
|
||||||
//
|
|
||||||
// To overwrite the generated implementation, omit call to parent function
|
|
||||||
// and implemented needed functionality here.
|
|
||||||
|
|
||||||
TouchGFXGeneratedHAL::setTFTFrameBuffer(address);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function is called whenever the framework has performed a partial draw.
|
|
||||||
*
|
|
||||||
* @param rect The area of the screen that has been drawn, expressed in absolute coordinates.
|
|
||||||
*
|
|
||||||
* @see flushFrameBuffer().
|
|
||||||
*/
|
|
||||||
void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)
|
|
||||||
{
|
|
||||||
// Calling parent implementation of flushFrameBuffer(const touchgfx::Rect& rect).
|
|
||||||
//
|
|
||||||
// To overwrite the generated implementation, omit call to parent function
|
|
||||||
// and implemented needed functionality here.
|
|
||||||
// Please note, HAL::flushFrameBuffer(const touchgfx::Rect& rect) must
|
|
||||||
// be called to notify the touchgfx framework that flush has been performed.
|
|
||||||
// To calculate he start adress of rect,
|
|
||||||
// use advanceFrameBufferToRect(uint8_t* fbPtr, const touchgfx::Rect& rect)
|
|
||||||
// defined in TouchGFXGeneratedHAL.cpp
|
|
||||||
|
|
||||||
TouchGFXGeneratedHAL::flushFrameBuffer(rect);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes)
|
|
||||||
{
|
|
||||||
return TouchGFXGeneratedHAL::blockCopy(dest, src, numBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configures the interrupts relevant for TouchGFX. This primarily entails setting
|
|
||||||
* the interrupt priorities for the DMA and LCD interrupts.
|
|
||||||
*/
|
|
||||||
void TouchGFXHAL::configureInterrupts()
|
|
||||||
{
|
|
||||||
// Calling parent implementation of configureInterrupts().
|
|
||||||
//
|
|
||||||
// To overwrite the generated implementation, omit call to parent function
|
|
||||||
// and implemented needed functionality here.
|
|
||||||
|
|
||||||
TouchGFXGeneratedHAL::configureInterrupts();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Used for enabling interrupts set in configureInterrupts()
|
|
||||||
*/
|
|
||||||
void TouchGFXHAL::enableInterrupts()
|
|
||||||
{
|
|
||||||
// Calling parent implementation of enableInterrupts().
|
|
||||||
//
|
|
||||||
// To overwrite the generated implementation, omit call to parent function
|
|
||||||
// and implemented needed functionality here.
|
|
||||||
|
|
||||||
TouchGFXGeneratedHAL::enableInterrupts();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Used for disabling interrupts set in configureInterrupts()
|
|
||||||
*/
|
|
||||||
void TouchGFXHAL::disableInterrupts()
|
|
||||||
{
|
|
||||||
// Calling parent implementation of disableInterrupts().
|
|
||||||
//
|
|
||||||
// To overwrite the generated implementation, omit call to parent function
|
|
||||||
// and implemented needed functionality here.
|
|
||||||
|
|
||||||
TouchGFXGeneratedHAL::disableInterrupts();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure the LCD controller to fire interrupts at VSYNC. Called automatically
|
|
||||||
* once TouchGFX initialization has completed.
|
|
||||||
*/
|
|
||||||
void TouchGFXHAL::enableLCDControllerInterrupt()
|
|
||||||
{
|
|
||||||
// Calling parent implementation of enableLCDControllerInterrupt().
|
|
||||||
//
|
|
||||||
// To overwrite the generated implementation, omit call to parent function
|
|
||||||
// and implemented needed functionality here.
|
|
||||||
|
|
||||||
TouchGFXGeneratedHAL::enableLCDControllerInterrupt();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TouchGFXHAL::beginFrame()
|
|
||||||
{
|
|
||||||
return TouchGFXGeneratedHAL::beginFrame();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXHAL::endFrame()
|
|
||||||
{
|
|
||||||
TouchGFXGeneratedHAL::endFrame();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* USER CODE END TouchGFXHAL.cpp */
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,171 +0,0 @@
|
|||||||
/* USER CODE BEGIN Header */
|
|
||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : TouchGFXHAL.hpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file was created by TouchGFX Generator 4.21.0. This file is only
|
|
||||||
* generated once! Delete this file from your project and re-generate code
|
|
||||||
* using STM32CubeMX or change this file manually to update it.
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
/* USER CODE END Header */
|
|
||||||
#ifndef TouchGFXHAL_HPP
|
|
||||||
#define TouchGFXHAL_HPP
|
|
||||||
|
|
||||||
/* USER CODE BEGIN TouchGFXHAL.hpp */
|
|
||||||
|
|
||||||
#include <TouchGFXGeneratedHAL.hpp>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @class TouchGFXHAL
|
|
||||||
*
|
|
||||||
* @brief HAL implementation for TouchGFX.
|
|
||||||
*
|
|
||||||
* @sa HAL
|
|
||||||
*/
|
|
||||||
class TouchGFXHAL : public TouchGFXGeneratedHAL
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @fn TouchGFXHAL::TouchGFXHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) : TouchGFXGeneratedHAL(dma, display, tc, width, height)
|
|
||||||
*
|
|
||||||
* @brief Constructor.
|
|
||||||
*
|
|
||||||
* Constructor. Initializes members.
|
|
||||||
*
|
|
||||||
* @param [in,out] dma Reference to DMA interface.
|
|
||||||
* @param [in,out] display Reference to LCD interface.
|
|
||||||
* @param [in,out] tc Reference to Touch Controller driver.
|
|
||||||
* @param width Width of the display.
|
|
||||||
* @param height Height of the display.
|
|
||||||
*/
|
|
||||||
TouchGFXHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) : TouchGFXGeneratedHAL(dma, display, tc, width, height)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void initialize();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXHAL::disableInterrupts();
|
|
||||||
*
|
|
||||||
* @brief Disables the DMA and LCD interrupts.
|
|
||||||
*
|
|
||||||
* Disables the DMA and LCD interrupts.
|
|
||||||
*/
|
|
||||||
virtual void disableInterrupts();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXHAL::enableInterrupts();
|
|
||||||
*
|
|
||||||
* @brief Enables the DMA and LCD interrupts.
|
|
||||||
*
|
|
||||||
* Enables the DMA and LCD interrupts.
|
|
||||||
*/
|
|
||||||
virtual void enableInterrupts();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXHAL::configureInterrupts();
|
|
||||||
*
|
|
||||||
* @brief Sets the DMA and LCD interrupt priorities.
|
|
||||||
*
|
|
||||||
* Sets the DMA and LCD interrupt priorities.
|
|
||||||
*/
|
|
||||||
virtual void configureInterrupts();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXHAL::enableLCDControllerInterrupt();
|
|
||||||
*
|
|
||||||
* @brief Configure the LCD controller to fire interrupts at VSYNC.
|
|
||||||
*
|
|
||||||
* Configure the LCD controller to fire interrupts at VSYNC. Called automatically
|
|
||||||
* once TouchGFX initialization has completed.
|
|
||||||
*/
|
|
||||||
virtual void enableLCDControllerInterrupt();
|
|
||||||
|
|
||||||
virtual bool beginFrame();
|
|
||||||
|
|
||||||
virtual void endFrame();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXHAL::flushFrameBuffer();
|
|
||||||
*
|
|
||||||
* @brief This function is called whenever the framework has performed a complete draw.
|
|
||||||
*
|
|
||||||
* This specialization is only in place to keep compilers happy. Base impl. will call the
|
|
||||||
* Rect version.
|
|
||||||
* @see HAL::flushFrameBuffer
|
|
||||||
*/
|
|
||||||
virtual void flushFrameBuffer()
|
|
||||||
{
|
|
||||||
TouchGFXGeneratedHAL::flushFrameBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXHAL::flushFrameBuffer(const Rect& rect);
|
|
||||||
*
|
|
||||||
* @brief This function is called whenever the framework has performed a partial draw.
|
|
||||||
*
|
|
||||||
* This function is called whenever the framework has performed a partial draw.
|
|
||||||
* On the STM32F7, make sure to clean and invalidate the data cache. This is to
|
|
||||||
* ensure that LTDC sees correct data when transferring to the display.
|
|
||||||
*
|
|
||||||
* @param rect The area of the screen that has been drawn, expressed in absolute coordinates.
|
|
||||||
*
|
|
||||||
* @see flushFrameBuffer().
|
|
||||||
*/
|
|
||||||
virtual void flushFrameBuffer(const touchgfx::Rect& rect);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual bool TouchGFXHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes);
|
|
||||||
*
|
|
||||||
* @brief This function performs a platform-specific memcpy.
|
|
||||||
*
|
|
||||||
* This function performs a platform-specific memcpy, if supported by the hardware.
|
|
||||||
*
|
|
||||||
* @param [out] dest Pointer to destination memory.
|
|
||||||
* @param [in] src Pointer to source memory.
|
|
||||||
* @param numBytes Number of bytes to copy.
|
|
||||||
*
|
|
||||||
* @return true if the copy succeeded, false if copy was not performed.
|
|
||||||
*/
|
|
||||||
virtual bool blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
/**
|
|
||||||
* @fn virtual uint16_t* TouchGFXHAL::getTFTFrameBuffer() const;
|
|
||||||
*
|
|
||||||
* @brief Gets the frame buffer address used by the TFT controller.
|
|
||||||
*
|
|
||||||
* Gets the frame buffer address used by the TFT controller.
|
|
||||||
*
|
|
||||||
* @return The address of the frame buffer currently being displayed on the TFT.
|
|
||||||
*/
|
|
||||||
virtual uint16_t* getTFTFrameBuffer() const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXHAL::setTFTFrameBuffer(uint16_t* adr);
|
|
||||||
*
|
|
||||||
* @brief Sets the frame buffer address used by the TFT controller.
|
|
||||||
*
|
|
||||||
* Sets the frame buffer address used by the TFT controller.
|
|
||||||
*
|
|
||||||
* @param [in,out] adr New frame buffer address.
|
|
||||||
*/
|
|
||||||
virtual void setTFTFrameBuffer(uint16_t* adr);
|
|
||||||
};
|
|
||||||
|
|
||||||
/* USER CODE END TouchGFXHAL.hpp */
|
|
||||||
|
|
||||||
#endif // TouchGFXHAL_HPP
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,162 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : OSWrappers.cpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <cassert>
|
|
||||||
#include <touchgfx/hal/HAL.hpp>
|
|
||||||
#include <touchgfx/hal/OSWrappers.hpp>
|
|
||||||
|
|
||||||
#include <stm32h7xx_hal.h>
|
|
||||||
#include <touchgfx/hal/OSWrappers.hpp>
|
|
||||||
|
|
||||||
static volatile uint32_t fb_sem;
|
|
||||||
static volatile uint32_t vsync_sem;
|
|
||||||
|
|
||||||
using namespace touchgfx;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize frame buffer semaphore and queue/mutex for VSYNC signal.
|
|
||||||
*/
|
|
||||||
void OSWrappers::initialize()
|
|
||||||
{
|
|
||||||
fb_sem = 0;
|
|
||||||
vsync_sem = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Take the frame buffer semaphore. Blocks until semaphore is available.
|
|
||||||
*/
|
|
||||||
void OSWrappers::takeFrameBufferSemaphore()
|
|
||||||
{
|
|
||||||
while(fb_sem);
|
|
||||||
fb_sem = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Release the frame buffer semaphore.
|
|
||||||
*/
|
|
||||||
void OSWrappers::giveFrameBufferSemaphore()
|
|
||||||
{
|
|
||||||
fb_sem = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Attempt to obtain the frame buffer semaphore. If semaphore is not available, do
|
|
||||||
* nothing.
|
|
||||||
*
|
|
||||||
* Note must return immediately! This function does not care who has the taken the semaphore,
|
|
||||||
* it only serves to make sure that the semaphore is taken by someone.
|
|
||||||
*/
|
|
||||||
void OSWrappers::tryTakeFrameBufferSemaphore()
|
|
||||||
{
|
|
||||||
fb_sem = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Release the frame buffer semaphore in a way that is safe in interrupt context. Called
|
|
||||||
* from ISR.
|
|
||||||
*
|
|
||||||
* Release the frame buffer semaphore in a way that is safe in interrupt context.
|
|
||||||
* Called from ISR.
|
|
||||||
*/
|
|
||||||
void OSWrappers::giveFrameBufferSemaphoreFromISR()
|
|
||||||
{
|
|
||||||
fb_sem = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Signal that a VSYNC has occurred. Should make the vsync queue/mutex available.
|
|
||||||
*
|
|
||||||
* Note This function is called from an ISR, and should (depending on OS) trigger a
|
|
||||||
* scheduling.
|
|
||||||
*/
|
|
||||||
void OSWrappers::signalVSync()
|
|
||||||
{
|
|
||||||
vsync_sem = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Signal that the rendering of the frame has completed. Used by
|
|
||||||
* some systems to avoid using any previous vsync.
|
|
||||||
*/
|
|
||||||
void OSWrappers::signalRenderingDone()
|
|
||||||
{
|
|
||||||
vsync_sem = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This function checks if a VSync occurred after last rendering.
|
|
||||||
* The function is used in systems that cannot wait in waitForVSync
|
|
||||||
* (because they are also checking other event sources.
|
|
||||||
*
|
|
||||||
* @note signalRenderingDone is typically used together with this function.
|
|
||||||
*
|
|
||||||
* @return True if VSync occurred.
|
|
||||||
*/
|
|
||||||
bool OSWrappers::isVSyncAvailable()
|
|
||||||
{
|
|
||||||
return vsync_sem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This function check if a VSYNC has occured.
|
|
||||||
* If VSYNC has occured, signal TouchGFX to start a rendering
|
|
||||||
*/
|
|
||||||
void OSWrappers::waitForVSync()
|
|
||||||
{
|
|
||||||
if(vsync_sem)
|
|
||||||
{
|
|
||||||
vsync_sem = 0;
|
|
||||||
HAL::getInstance()->backPorchExited();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* A function that causes executing task to sleep for a number of milliseconds.
|
|
||||||
*
|
|
||||||
* A function that causes executing task to sleep for a number of milliseconds.
|
|
||||||
* This function is OPTIONAL. It is only used by the TouchGFX in the case of
|
|
||||||
* a specific frame refresh strategy (REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL).
|
|
||||||
* Due to backwards compatibility, in order for this function to be useable by the HAL
|
|
||||||
* the function must be explicitly registered:
|
|
||||||
* hal.registerTaskDelayFunction(&OSWrappers::taskDelay)
|
|
||||||
*
|
|
||||||
* see HAL::setFrameRefreshStrategy(FrameRefreshStrategy s)
|
|
||||||
* see HAL::registerTaskDelayFunction(void (*delayF)(uint16_t))
|
|
||||||
*/
|
|
||||||
void OSWrappers::taskDelay(uint16_t ms)
|
|
||||||
{
|
|
||||||
HAL_Delay(ms);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A function that causes the executing task to yield control to
|
|
||||||
* another thread. This function is used by the framework when it
|
|
||||||
* is necessary to wait a little before continuing (e.g. drawing).
|
|
||||||
*
|
|
||||||
* The implementation should typically request the operating
|
|
||||||
* system to change to another task of similar priority. When
|
|
||||||
* running without an operating system, the implementation can run
|
|
||||||
* a very short task and return.
|
|
||||||
*/
|
|
||||||
void OSWrappers::taskYield()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : STM32DMA.cpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <STM32DMA.hpp>
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
STM32DMA::STM32DMA()
|
|
||||||
: DMA_Interface(q), q(&b, 1)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
touchgfx::BlitOperations STM32DMA::getBlitCaps()
|
|
||||||
{
|
|
||||||
return static_cast<touchgfx::BlitOperations>(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void STM32DMA::setupDataCopy(const touchgfx::BlitOp& blitOp)
|
|
||||||
{
|
|
||||||
assert(0 && "DMA operation not supported");
|
|
||||||
}
|
|
||||||
|
|
||||||
void STM32DMA::setupDataFill(const touchgfx::BlitOp& blitOp)
|
|
||||||
{
|
|
||||||
assert(0 && "DMA operation not supported");
|
|
||||||
}
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,93 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : STM32DMA.hpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
#ifndef STM32DMA_HPP
|
|
||||||
#define STM32DMA_HPP
|
|
||||||
|
|
||||||
#include <touchgfx/hal/BlitOp.hpp>
|
|
||||||
#include <touchgfx/hal/DMA.hpp>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @class STM32DMA
|
|
||||||
*
|
|
||||||
* @brief This class specializes DMA_Interface for the STM32 processors.
|
|
||||||
*
|
|
||||||
* @see touchgfx::DMA_Interface
|
|
||||||
*/
|
|
||||||
class STM32DMA : public touchgfx::DMA_Interface
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @fn STM32DMA::STM32DMA();
|
|
||||||
*
|
|
||||||
* @brief Default constructor.
|
|
||||||
*/
|
|
||||||
STM32DMA();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn touchgfx::BlitOperations STM32DMA::getBlitCaps();
|
|
||||||
*
|
|
||||||
* @brief No blit operations supported by this DMA implementation.
|
|
||||||
*
|
|
||||||
* @return Zero (no blit ops supported).
|
|
||||||
*/
|
|
||||||
virtual touchgfx::BlitOperations getBlitCaps();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void STM32DMA::setupDataCopy(const touchgfx::BlitOp& blitOp);
|
|
||||||
*
|
|
||||||
* @brief Asserts if used.
|
|
||||||
*
|
|
||||||
* @param blitOp The blit operation to be performed by this DMA instance.
|
|
||||||
*/
|
|
||||||
virtual void setupDataCopy(const touchgfx::BlitOp& blitOp);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void STM32DMA::setupDataFill(const touchgfx::BlitOp& blitOp);
|
|
||||||
*
|
|
||||||
* @brief Asserts if used.
|
|
||||||
*
|
|
||||||
* @param blitOp The blit operation to be performed by this DMA instance.
|
|
||||||
*/
|
|
||||||
virtual void setupDataFill(const touchgfx::BlitOp& blitOp);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void STM32DMA::signalDMAInterrupt();
|
|
||||||
*
|
|
||||||
* @brief Does nothing.
|
|
||||||
*/
|
|
||||||
virtual void signalDMAInterrupt()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void STM32DMA::flush();
|
|
||||||
*
|
|
||||||
* @brief Block until all DMA transfers are complete. Since this particular DMA does not do
|
|
||||||
* anything, return immediately.
|
|
||||||
*/
|
|
||||||
virtual void flush()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
touchgfx::LockFreeDMA_Queue q;
|
|
||||||
touchgfx::BlitOp b;
|
|
||||||
};
|
|
||||||
#endif // TOUCHGFX_NODMA_HPP
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,78 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : TouchGFXConfiguration.cpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <texts/TypedTextDatabase.hpp>
|
|
||||||
#include <fonts/ApplicationFontProvider.hpp>
|
|
||||||
#include <gui/common/FrontendHeap.hpp>
|
|
||||||
#include <BitmapDatabase.hpp>
|
|
||||||
#include <platform/driver/lcd/LCD24bpp.hpp>
|
|
||||||
#include <touchgfx/hal/OSWrappers.hpp>
|
|
||||||
#include <STM32DMA.hpp>
|
|
||||||
#include <TouchGFXHAL.hpp>
|
|
||||||
#include <STM32TouchController.hpp>
|
|
||||||
#include <stm32h7xx_hal.h>
|
|
||||||
|
|
||||||
extern "C" void touchgfx_init();
|
|
||||||
extern "C" void touchgfx_taskEntry();
|
|
||||||
extern "C" void touchgfx_components_init();
|
|
||||||
|
|
||||||
static STM32TouchController tc;
|
|
||||||
static STM32DMA dma;
|
|
||||||
static LCD24bpp display;
|
|
||||||
static ApplicationFontProvider fontProvider;
|
|
||||||
static Texts texts;
|
|
||||||
static TouchGFXHAL hal(dma, display, tc, 1024, 600);
|
|
||||||
|
|
||||||
void touchgfx_init()
|
|
||||||
{
|
|
||||||
Bitmap::registerBitmapDatabase(BitmapDatabase::getInstance(), BitmapDatabase::getInstanceSize());
|
|
||||||
TypedText::registerTexts(&texts);
|
|
||||||
Texts::setLanguage(0);
|
|
||||||
|
|
||||||
FontManager::setFontProvider(&fontProvider);
|
|
||||||
|
|
||||||
FrontendHeap& heap = FrontendHeap::getInstance();
|
|
||||||
/*
|
|
||||||
* we need to obtain the reference above to initialize the frontend heap.
|
|
||||||
*/
|
|
||||||
(void)heap;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Initialize TouchGFX
|
|
||||||
*/
|
|
||||||
hal.initialize();
|
|
||||||
}
|
|
||||||
|
|
||||||
void touchgfx_components_init()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void touchgfx_taskEntry()
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
* Main event loop will check for VSYNC signal, and then process next frame.
|
|
||||||
*
|
|
||||||
* Note This function returns immediately if there is no VSYNC signal.
|
|
||||||
*/
|
|
||||||
if (OSWrappers::isVSyncAvailable())
|
|
||||||
{
|
|
||||||
hal.backPorchExited();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,187 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : TouchGFXGeneratedHAL.cpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <TouchGFXGeneratedHAL.hpp>
|
|
||||||
#include <touchgfx/hal/OSWrappers.hpp>
|
|
||||||
#include <gui/common/FrontendHeap.hpp>
|
|
||||||
#include <touchgfx/hal/GPIO.hpp>
|
|
||||||
#include <touchgfx/hal/PaintImpl.hpp>
|
|
||||||
#include <touchgfx/hal/PaintRGB888Impl.hpp>
|
|
||||||
|
|
||||||
#include "stm32h7xx.h"
|
|
||||||
#include "stm32h7xx_hal_ltdc.h"
|
|
||||||
|
|
||||||
using namespace touchgfx;
|
|
||||||
|
|
||||||
namespace
|
|
||||||
{
|
|
||||||
// Use the section "TouchGFX_Framebuffer" in the linker script to specify the placement of the buffer
|
|
||||||
LOCATION_PRAGMA_NOLOAD("TouchGFX_Framebuffer")
|
|
||||||
uint32_t frameBuf[(1024 * 600 * 3 + 3) / 4] LOCATION_ATTRIBUTE_NOLOAD("TouchGFX_Framebuffer");
|
|
||||||
static volatile bool refreshRequested = false;
|
|
||||||
static uint16_t lcd_int_active_line;
|
|
||||||
static uint16_t lcd_int_porch_line;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXGeneratedHAL::initialize()
|
|
||||||
{
|
|
||||||
HAL::initialize();
|
|
||||||
registerEventListener(*(Application::getInstance()));
|
|
||||||
registerTaskDelayFunction(&OSWrappers::taskDelay);
|
|
||||||
setFrameRefreshStrategy(HAL::REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL);
|
|
||||||
enableLCDControllerInterrupt();
|
|
||||||
enableInterrupts();
|
|
||||||
setFrameBufferStartAddresses((void*)frameBuf, (void*)0, (void*)0);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXGeneratedHAL::configureInterrupts()
|
|
||||||
{
|
|
||||||
NVIC_SetPriority(LTDC_IRQn, 9);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXGeneratedHAL::enableInterrupts()
|
|
||||||
{
|
|
||||||
NVIC_EnableIRQ(LTDC_IRQn);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXGeneratedHAL::disableInterrupts()
|
|
||||||
{
|
|
||||||
NVIC_DisableIRQ(LTDC_IRQn);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXGeneratedHAL::enableLCDControllerInterrupt()
|
|
||||||
{
|
|
||||||
lcd_int_active_line = (LTDC->BPCR & 0x7FF) - 1;
|
|
||||||
lcd_int_porch_line = (LTDC->AWCR & 0x7FF) - 1;
|
|
||||||
|
|
||||||
/* Sets the Line Interrupt position */
|
|
||||||
LTDC->LIPCR = lcd_int_active_line;
|
|
||||||
/* Line Interrupt Enable */
|
|
||||||
LTDC->IER |= LTDC_IER_LIE;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TouchGFXGeneratedHAL::beginFrame()
|
|
||||||
{
|
|
||||||
return HAL::beginFrame();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXGeneratedHAL::endFrame()
|
|
||||||
{
|
|
||||||
if (frameBufferUpdatedThisFrame)
|
|
||||||
{
|
|
||||||
refreshRequested = true;
|
|
||||||
}
|
|
||||||
HAL::endFrame();
|
|
||||||
touchgfx::OSWrappers::signalRenderingDone();
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t* TouchGFXGeneratedHAL::getTFTFrameBuffer() const
|
|
||||||
{
|
|
||||||
return (uint16_t*)LTDC_Layer1->CFBAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXGeneratedHAL::setTFTFrameBuffer(uint16_t* adr)
|
|
||||||
{
|
|
||||||
LTDC_Layer1->CFBAR = (uint32_t)adr;
|
|
||||||
|
|
||||||
/* Reload immediate */
|
|
||||||
LTDC->SRCR = (uint32_t)LTDC_SRCR_IMR;
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXGeneratedHAL::flushFrameBuffer(const touchgfx::Rect& rect)
|
|
||||||
{
|
|
||||||
HAL::flushFrameBuffer(rect);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TouchGFXGeneratedHAL::blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes)
|
|
||||||
{
|
|
||||||
return HAL::blockCopy(dest, src, numBytes);
|
|
||||||
}
|
|
||||||
|
|
||||||
uint16_t TouchGFXGeneratedHAL::getTFTCurrentLine()
|
|
||||||
{
|
|
||||||
// This function only requires an implementation if single buffering
|
|
||||||
// on LTDC display is being used (REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL).
|
|
||||||
|
|
||||||
// The CPSR register (bits 15:0) specify current line of TFT controller.
|
|
||||||
uint16_t curr = (uint16_t)(LTDC->CPSR & 0xffff);
|
|
||||||
uint16_t backPorchY = (uint16_t)(LTDC->BPCR & 0x7FF) + 1;
|
|
||||||
|
|
||||||
// The semantics of the getTFTCurrentLine() function is to return a value
|
|
||||||
// in the range of 0-totalheight. If we are still in back porch area, return 0.
|
|
||||||
return (curr < backPorchY) ? 0 : (curr - backPorchY);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXGeneratedHAL::InvalidateCache()
|
|
||||||
{
|
|
||||||
// If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then
|
|
||||||
// the DCache must be flushed prior to DMA2D accessing it. That's done
|
|
||||||
// using the function SCB_CleanInvalidateDCache(). Remember to enable "CPU Cache" in the
|
|
||||||
// "System Core" settings for "Cortex M7" in CubeMX in order for this function call to work.
|
|
||||||
if (SCB->CCR & SCB_CCR_DC_Msk)
|
|
||||||
{
|
|
||||||
SCB_CleanInvalidateDCache();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchGFXGeneratedHAL::FlushCache()
|
|
||||||
{
|
|
||||||
// If the framebuffer is placed in Write Through cached memory (e.g. SRAM) then
|
|
||||||
// the DCache must be flushed prior to DMA2D accessing it. That's done
|
|
||||||
// using the function SCB_CleanInvalidateDCache(). Remember to enable "CPU Cache" in the
|
|
||||||
// "System Core" settings for "Cortex M7" in CubeMX in order for this function call to work.
|
|
||||||
if (SCB->CCR & SCB_CCR_DC_Msk)
|
|
||||||
{
|
|
||||||
SCB_CleanInvalidateDCache();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C"
|
|
||||||
{
|
|
||||||
void HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef* hltdc)
|
|
||||||
{
|
|
||||||
if (!HAL::getInstance())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (LTDC->LIPCR == lcd_int_active_line)
|
|
||||||
{
|
|
||||||
//entering active area
|
|
||||||
HAL_LTDC_ProgramLineEvent(hltdc, lcd_int_porch_line);
|
|
||||||
HAL::getInstance()->vSync();
|
|
||||||
OSWrappers::signalVSync();
|
|
||||||
|
|
||||||
// Swap frame buffers immediately instead of waiting for the task to be scheduled in.
|
|
||||||
// Note: task will also swap when it wakes up, but that operation is guarded and will not have
|
|
||||||
// any effect if already swapped.
|
|
||||||
HAL::getInstance()->swapFrameBuffers();
|
|
||||||
GPIO::set(GPIO::VSYNC_FREQ);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//exiting active area
|
|
||||||
HAL_LTDC_ProgramLineEvent(hltdc, lcd_int_active_line);
|
|
||||||
|
|
||||||
// Signal to the framework that display update has finished.
|
|
||||||
HAL::getInstance()->frontPorchEntered();
|
|
||||||
GPIO::clear(GPIO::VSYNC_FREQ);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
@ -1,213 +0,0 @@
|
|||||||
/**
|
|
||||||
******************************************************************************
|
|
||||||
* File Name : TouchGFXGeneratedHAL.hpp
|
|
||||||
******************************************************************************
|
|
||||||
* This file is generated by TouchGFX Generator 4.21.0. Please, do not edit!
|
|
||||||
******************************************************************************
|
|
||||||
* @attention
|
|
||||||
*
|
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
|
||||||
* in the root directory of this software component.
|
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
|
||||||
*
|
|
||||||
******************************************************************************
|
|
||||||
*/
|
|
||||||
#ifndef TouchGFXGeneratedHAL_HPP
|
|
||||||
#define TouchGFXGeneratedHAL_HPP
|
|
||||||
|
|
||||||
#include <touchgfx/hal/HAL.hpp>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @class TouchGFXGeneratedHAL
|
|
||||||
*
|
|
||||||
* @brief HAL implementation for TouchGFXGenerated.
|
|
||||||
*
|
|
||||||
* @sa HAL
|
|
||||||
*/
|
|
||||||
class TouchGFXGeneratedHAL : public touchgfx::HAL
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @fn TouchGFXGeneratedHAL::TouchGFXGeneratedHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) : touchgfx::HAL(dma, display, tc, width, height)
|
|
||||||
*
|
|
||||||
* @brief Constructor.
|
|
||||||
*
|
|
||||||
* Constructor. Initializes members.
|
|
||||||
*
|
|
||||||
* @param [in,out] dma Reference to DMA interface.
|
|
||||||
* @param [in,out] display Reference to LCD interface.
|
|
||||||
* @param [in,out] tc Reference to Touch Controller driver.
|
|
||||||
* @param width Width of the display.
|
|
||||||
* @param height Height of the display.
|
|
||||||
*/
|
|
||||||
TouchGFXGeneratedHAL(touchgfx::DMA_Interface& dma, touchgfx::LCD& display, touchgfx::TouchController& tc, uint16_t width, uint16_t height) :
|
|
||||||
touchgfx::HAL(dma, display, tc, width, height)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn void TouchGFXGeneratedHAL::initialize();
|
|
||||||
*
|
|
||||||
* @brief This function is responsible for initializing the entire framework.
|
|
||||||
*
|
|
||||||
* This function is responsible for initializing the entire framework.
|
|
||||||
*/
|
|
||||||
virtual void initialize();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXGeneratedHAL::configureInterrupts();
|
|
||||||
*
|
|
||||||
* @brief Sets the DMA and LCD interrupt priorities.
|
|
||||||
*
|
|
||||||
* Sets the DMA and LCD interrupt priorities.
|
|
||||||
*/
|
|
||||||
virtual void configureInterrupts();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXGeneratedHAL::enableInterrupts();
|
|
||||||
*
|
|
||||||
* @brief Enables the DMA and LCD interrupts.
|
|
||||||
*
|
|
||||||
* Enables the DMA and LCD interrupts.
|
|
||||||
*/
|
|
||||||
virtual void enableInterrupts();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXGeneratedHAL::disableInterrupts();
|
|
||||||
*
|
|
||||||
* @brief Disables the DMA and LCD interrupts.
|
|
||||||
*
|
|
||||||
* Disables the DMA and LCD interrupts.
|
|
||||||
*/
|
|
||||||
virtual void disableInterrupts();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXGeneratedHAL::enableLCDControllerInterrupt();
|
|
||||||
*
|
|
||||||
* @brief Configure the LCD controller to fire interrupts at VSYNC.
|
|
||||||
*
|
|
||||||
* Configure the LCD controller to fire interrupts at VSYNC. Called automatically
|
|
||||||
* once TouchGFX initialization has completed.
|
|
||||||
*/
|
|
||||||
virtual void enableLCDControllerInterrupt();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXGeneratedHAL::flushFrameBuffer();
|
|
||||||
*
|
|
||||||
* @brief This function is called whenever the framework has performed a complete draw.
|
|
||||||
*
|
|
||||||
* This specialization is only in place to keep compilers happy. Base impl. will call the
|
|
||||||
* Rect version.
|
|
||||||
* @see HAL::flushFrameBuffer
|
|
||||||
*/
|
|
||||||
virtual void flushFrameBuffer()
|
|
||||||
{
|
|
||||||
HAL::flushFrameBuffer();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXGeneratedHAL::flushFrameBuffer(const touchgfx::Rect& rect);
|
|
||||||
*
|
|
||||||
* @brief This function is called whenever the framework has performed a partial draw.
|
|
||||||
*
|
|
||||||
* This function is called whenever the framework has performed a partial draw.
|
|
||||||
* On the STM32F7, make sure to clean and invalidate the data cache. This is to
|
|
||||||
* ensure that LTDC sees correct data when transferring to the display.
|
|
||||||
*
|
|
||||||
* @param rect The area of the screen that has been drawn, expressed in absolute coordinates.
|
|
||||||
*
|
|
||||||
* @see flushFrameBuffer().
|
|
||||||
*/
|
|
||||||
virtual void flushFrameBuffer(const touchgfx::Rect& rect);
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @fn virtual void TouchGFXGeneratedHAL::blockCopy();
|
|
||||||
*
|
|
||||||
* This function performs a platform-specific memcpy, if supported by the hardware.
|
|
||||||
*
|
|
||||||
* @param [out] dest Pointer to destination memory.
|
|
||||||
* @param [in] src Pointer to source memory.
|
|
||||||
* @param numBytes Number of bytes to copy.
|
|
||||||
*
|
|
||||||
* @return true if the copy succeeded, false if copy was not performed.
|
|
||||||
*/
|
|
||||||
virtual bool blockCopy(void* RESTRICT dest, const void* RESTRICT src, uint32_t numBytes);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXGeneratedHAL::beginFrame();
|
|
||||||
*
|
|
||||||
* @brief Called when beginning to rendering a frame.
|
|
||||||
*
|
|
||||||
* Called when beginning to rendering a frame.
|
|
||||||
*
|
|
||||||
* @return true if rendering can begin, false otherwise.
|
|
||||||
*/
|
|
||||||
virtual bool beginFrame();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXGeneratedHAL::endFrame();
|
|
||||||
*
|
|
||||||
* @brief Called when a rendering pass is completed.
|
|
||||||
*
|
|
||||||
* Called when a rendering pass is completed.
|
|
||||||
*/
|
|
||||||
virtual void endFrame();
|
|
||||||
|
|
||||||
protected:
|
|
||||||
/**
|
|
||||||
* @fn virtual uint16_t* TouchGFXGeneratedHAL::getTFTFrameBuffer() const;
|
|
||||||
*
|
|
||||||
* @brief Gets the frame buffer address used by the TFT controller.
|
|
||||||
*
|
|
||||||
* Gets the frame buffer address used by the TFT controller.
|
|
||||||
*
|
|
||||||
* @return The address of the frame buffer currently being displayed on the TFT.
|
|
||||||
*/
|
|
||||||
virtual uint16_t* getTFTFrameBuffer() const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual void TouchGFXGeneratedHAL::setTFTFrameBuffer(uint16_t* adr);
|
|
||||||
*
|
|
||||||
* @brief Sets the frame buffer address used by the TFT controller.
|
|
||||||
*
|
|
||||||
* Sets the frame buffer address used by the TFT controller.
|
|
||||||
*
|
|
||||||
* @param [in,out] adr New frame buffer address.
|
|
||||||
*/
|
|
||||||
virtual void setTFTFrameBuffer(uint16_t* adr);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @fn virtual uint16_t TouchGFXGeneratedHAL::getTFTCurrentLine()
|
|
||||||
*
|
|
||||||
* @brief Get the current line (Y) of the TFT controller
|
|
||||||
*
|
|
||||||
* This function is used to obtain the progress of the TFT controller. More
|
|
||||||
* specifically, the line (or Y-value) currently being transferred.
|
|
||||||
*
|
|
||||||
* Note: The value must be adjusted to account for vertical back porch before
|
|
||||||
* returning, such that the value is always within the range of 0 <= value <
|
|
||||||
* actual display height in pixels
|
|
||||||
*
|
|
||||||
* It is used for the REFRESH_STRATEGY_OPTIM_SINGLE_BUFFER_TFT_CTRL frame refresh
|
|
||||||
* strategy in order to synchronize frame buffer drawing with TFT controller
|
|
||||||
* progress. If this strategy is used, the concrete HAL subclass must provide an
|
|
||||||
* override of this function that returns correct line value. If this strategy is
|
|
||||||
* not used, then the getTFTCurrentLine function is never called and can be
|
|
||||||
* disregarded.
|
|
||||||
*
|
|
||||||
* @return In this default implementation, 0xFFFF is returned to signify "not implemented".
|
|
||||||
*/
|
|
||||||
virtual uint16_t getTFTCurrentLine();
|
|
||||||
|
|
||||||
virtual void InvalidateCache();
|
|
||||||
|
|
||||||
virtual void FlushCache();
|
|
||||||
|
|
||||||
};
|
|
||||||
#endif // TouchGFXGeneratedHAL_HPP
|
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
5178
Software/build/FT23_Charger.map
Normal file
5178
Software/build/FT23_Charger.map
Normal file
File diff suppressed because it is too large
Load Diff
8
Software/openocd.cfg
Normal file
8
Software/openocd.cfg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#OpenOCD configuration file, generated by STM32 for VSCode
|
||||||
|
|
||||||
|
# Programmer, can be changed to several interfaces
|
||||||
|
# Standard will be the STLink interface as this is the standard for STM32 dev boards
|
||||||
|
source [find interface/stlink.cfg]
|
||||||
|
|
||||||
|
# The target MCU. This should match your board
|
||||||
|
source [find target/stm32h7x.cfg]
|
@ -1,179 +1,190 @@
|
|||||||
/*
|
/*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
**
|
**
|
||||||
** File : LinkerScript.ld
|
|
||||||
**
|
** File : LinkerScript.ld
|
||||||
** Author : STM32CubeIDE
|
**
|
||||||
**
|
** Author : STM32CubeMX
|
||||||
** Abstract : Linker script for STM32H7 series
|
**
|
||||||
** 2048Kbytes FLASH and 1376Kbytes RAM
|
** Abstract : Linker script for STM32H7A3ZITx series
|
||||||
**
|
** 2048Kbytes FLASH and 1216Kbytes RAM
|
||||||
** Set heap size, stack size and stack location according
|
**
|
||||||
** to application requirements.
|
** Set heap size, stack size and stack location according
|
||||||
**
|
** to application requirements.
|
||||||
** Set memory bank area and size if external memory is used.
|
**
|
||||||
**
|
** Set memory bank area and size if external memory is used.
|
||||||
** Target : STMicroelectronics STM32
|
**
|
||||||
**
|
** Target : STMicroelectronics STM32
|
||||||
** Distribution: The file is distributed as is, without any warranty
|
**
|
||||||
** of any kind.
|
** Distribution: The file is distributed “as is,” without any warranty
|
||||||
**
|
** of any kind.
|
||||||
*****************************************************************************
|
**
|
||||||
** @attention
|
*****************************************************************************
|
||||||
**
|
** @attention
|
||||||
** Copyright (c) 2024 STMicroelectronics.
|
**
|
||||||
** All rights reserved.
|
** <h2><center>© COPYRIGHT(c) 2019 STMicroelectronics</center></h2>
|
||||||
**
|
**
|
||||||
** This software is licensed under terms that can be found in the LICENSE file
|
** Redistribution and use in source and binary forms, with or without modification,
|
||||||
** in the root directory of this software component.
|
** are permitted provided that the following conditions are met:
|
||||||
** If no LICENSE file comes with this software, it is provided AS-IS.
|
** 1. Redistributions of source code must retain the above copyright notice,
|
||||||
**
|
** this list of conditions and the following disclaimer.
|
||||||
****************************************************************************
|
** 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
*/
|
** this list of conditions and the following disclaimer in the documentation
|
||||||
|
** and/or other materials provided with the distribution.
|
||||||
/* Entry Point */
|
** 3. Neither the name of STMicroelectronics nor the names of its contributors
|
||||||
ENTRY(Reset_Handler)
|
** may be used to endorse or promote products derived from this software
|
||||||
|
** without specific prior written permission.
|
||||||
/* Highest address of the user mode stack */
|
**
|
||||||
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of RAM */
|
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
/* Generate a link error if heap and stack don't fit into RAM */
|
** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
_Min_Heap_Size = 0x200; /* required amount of heap */
|
** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
_Min_Stack_Size = 0x400; /* required amount of stack */
|
** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
/* Specify the memory areas */
|
** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
MEMORY
|
** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
{
|
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K
|
** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 2048K
|
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
DTCMRAM1 (xrw) : ORIGIN = 0x20000000, LENGTH = 64K
|
**
|
||||||
DTCMRAM2 (xrw) : ORIGIN = 0x20010000, LENGTH = 64K
|
*****************************************************************************
|
||||||
RAM (xrw) : ORIGIN = 0x24000000, LENGTH = 1024K
|
*/
|
||||||
RAM_CD (xrw) : ORIGIN = 0x30000000, LENGTH = 128K
|
|
||||||
RAM_SRD (xrw) : ORIGIN = 0x38000000, LENGTH = 32K
|
/* Entry Point */
|
||||||
}
|
ENTRY(Reset_Handler)
|
||||||
|
|
||||||
/* Define output sections */
|
/* Highest address of the user mode stack */
|
||||||
SECTIONS
|
_estack = ORIGIN(DTCMRAM) + LENGTH(DTCMRAM); /* end of RAM */
|
||||||
{
|
/* Generate a link error if heap and stack don't fit into RAM */
|
||||||
/* The startup code goes first into FLASH */
|
_Min_Heap_Size = 0x200; /* required amount of heap */
|
||||||
.isr_vector :
|
_Min_Stack_Size = 0x400; /* required amount of stack */
|
||||||
{
|
|
||||||
. = ALIGN(4);
|
/* Specify the memory areas */
|
||||||
KEEP(*(.isr_vector)) /* Startup code */
|
MEMORY
|
||||||
. = ALIGN(4);
|
{
|
||||||
} >FLASH
|
DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
|
||||||
|
RAM (xrw) : ORIGIN = 0x24000000, LENGTH = 1024K
|
||||||
/* The program code and other data goes into FLASH */
|
ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K
|
||||||
.text :
|
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 2048K
|
||||||
{
|
}
|
||||||
. = ALIGN(4);
|
|
||||||
*(.text) /* .text sections (code) */
|
/* Define output sections */
|
||||||
*(.text*) /* .text* sections (code) */
|
SECTIONS
|
||||||
*(.glue_7) /* glue arm to thumb code */
|
{
|
||||||
*(.glue_7t) /* glue thumb to arm code */
|
/* The startup code goes first into FLASH */
|
||||||
*(.eh_frame)
|
.isr_vector :
|
||||||
|
{
|
||||||
KEEP (*(.init))
|
. = ALIGN(4);
|
||||||
KEEP (*(.fini))
|
KEEP(*(.isr_vector)) /* Startup code */
|
||||||
|
. = ALIGN(4);
|
||||||
. = ALIGN(4);
|
} >FLASH
|
||||||
_etext = .; /* define a global symbols at end of code */
|
|
||||||
} >FLASH
|
/* The program code and other data goes into FLASH */
|
||||||
|
.text :
|
||||||
/* Constant data goes into FLASH */
|
{
|
||||||
.rodata :
|
. = ALIGN(4);
|
||||||
{
|
*(.text) /* .text sections (code) */
|
||||||
. = ALIGN(4);
|
*(.text*) /* .text* sections (code) */
|
||||||
*(.rodata) /* .rodata sections (constants, strings, etc.) */
|
*(.glue_7) /* glue arm to thumb code */
|
||||||
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
|
*(.glue_7t) /* glue thumb to arm code */
|
||||||
. = ALIGN(4);
|
*(.eh_frame)
|
||||||
} >FLASH
|
|
||||||
|
KEEP (*(.init))
|
||||||
.ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
|
KEEP (*(.fini))
|
||||||
{
|
|
||||||
*(.ARM.extab* .gnu.linkonce.armextab.*)
|
. = ALIGN(4);
|
||||||
} >FLASH
|
_etext = .; /* define a global symbols at end of code */
|
||||||
.ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
|
} >FLASH
|
||||||
{
|
|
||||||
__exidx_start = .;
|
/* Constant data goes into FLASH */
|
||||||
*(.ARM.exidx*)
|
.rodata :
|
||||||
__exidx_end = .;
|
{
|
||||||
} >FLASH
|
. = ALIGN(4);
|
||||||
|
*(.rodata) /* .rodata sections (constants, strings, etc.) */
|
||||||
.preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
|
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
|
||||||
{
|
. = ALIGN(4);
|
||||||
PROVIDE_HIDDEN (__preinit_array_start = .);
|
} >FLASH
|
||||||
KEEP (*(.preinit_array*))
|
|
||||||
PROVIDE_HIDDEN (__preinit_array_end = .);
|
.ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) } >FLASH
|
||||||
} >FLASH
|
.ARM : {
|
||||||
|
__exidx_start = .;
|
||||||
.init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
|
*(.ARM.exidx*)
|
||||||
{
|
__exidx_end = .;
|
||||||
PROVIDE_HIDDEN (__init_array_start = .);
|
} >FLASH
|
||||||
KEEP (*(SORT(.init_array.*)))
|
|
||||||
KEEP (*(.init_array*))
|
.preinit_array :
|
||||||
PROVIDE_HIDDEN (__init_array_end = .);
|
{
|
||||||
} >FLASH
|
PROVIDE_HIDDEN (__preinit_array_start = .);
|
||||||
|
KEEP (*(.preinit_array*))
|
||||||
.fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
|
PROVIDE_HIDDEN (__preinit_array_end = .);
|
||||||
{
|
} >FLASH
|
||||||
PROVIDE_HIDDEN (__fini_array_start = .);
|
.init_array :
|
||||||
KEEP (*(SORT(.fini_array.*)))
|
{
|
||||||
KEEP (*(.fini_array*))
|
PROVIDE_HIDDEN (__init_array_start = .);
|
||||||
PROVIDE_HIDDEN (__fini_array_end = .);
|
KEEP (*(SORT(.init_array.*)))
|
||||||
} >FLASH
|
KEEP (*(.init_array*))
|
||||||
|
PROVIDE_HIDDEN (__init_array_end = .);
|
||||||
/* used by the startup to initialize data */
|
} >FLASH
|
||||||
_sidata = LOADADDR(.data);
|
.fini_array :
|
||||||
|
{
|
||||||
/* Initialized data sections goes into RAM, load LMA copy after code */
|
PROVIDE_HIDDEN (__fini_array_start = .);
|
||||||
.data :
|
KEEP (*(SORT(.fini_array.*)))
|
||||||
{
|
KEEP (*(.fini_array*))
|
||||||
. = ALIGN(4);
|
PROVIDE_HIDDEN (__fini_array_end = .);
|
||||||
_sdata = .; /* create a global symbol at data start */
|
} >FLASH
|
||||||
*(.data) /* .data sections */
|
|
||||||
*(.data*) /* .data* sections */
|
/* used by the startup to initialize data */
|
||||||
*(.RamFunc) /* .RamFunc sections */
|
_sidata = LOADADDR(.data);
|
||||||
*(.RamFunc*) /* .RamFunc* sections */
|
|
||||||
|
/* Initialized data sections goes into RAM, load LMA copy after code */
|
||||||
. = ALIGN(4);
|
.data :
|
||||||
_edata = .; /* define a global symbol at data end */
|
{
|
||||||
} >RAM AT> FLASH
|
. = ALIGN(4);
|
||||||
|
_sdata = .; /* create a global symbol at data start */
|
||||||
/* Uninitialized data section */
|
*(.data) /* .data sections */
|
||||||
. = ALIGN(4);
|
*(.data*) /* .data* sections */
|
||||||
.bss :
|
|
||||||
{
|
. = ALIGN(4);
|
||||||
/* This is used by the startup in order to initialize the .bss section */
|
_edata = .; /* define a global symbol at data end */
|
||||||
_sbss = .; /* define a global symbol at bss start */
|
} >DTCMRAM AT> FLASH
|
||||||
__bss_start__ = _sbss;
|
|
||||||
*(.bss)
|
|
||||||
*(.bss*)
|
/* Uninitialized data section */
|
||||||
*(COMMON)
|
. = ALIGN(4);
|
||||||
|
.bss :
|
||||||
. = ALIGN(4);
|
{
|
||||||
_ebss = .; /* define a global symbol at bss end */
|
/* This is used by the startup in order to initialize the .bss secion */
|
||||||
__bss_end__ = _ebss;
|
_sbss = .; /* define a global symbol at bss start */
|
||||||
} >RAM
|
__bss_start__ = _sbss;
|
||||||
|
*(.bss)
|
||||||
/* User_heap_stack section, used to check that there is enough RAM left */
|
*(.bss*)
|
||||||
._user_heap_stack :
|
*(COMMON)
|
||||||
{
|
|
||||||
. = ALIGN(8);
|
. = ALIGN(4);
|
||||||
PROVIDE ( end = . );
|
_ebss = .; /* define a global symbol at bss end */
|
||||||
PROVIDE ( _end = . );
|
__bss_end__ = _ebss;
|
||||||
. = . + _Min_Heap_Size;
|
} >DTCMRAM
|
||||||
. = . + _Min_Stack_Size;
|
|
||||||
. = ALIGN(8);
|
/* User_heap_stack section, used to check that there is enough RAM left */
|
||||||
} >RAM
|
._user_heap_stack :
|
||||||
|
{
|
||||||
/* Remove information from the standard libraries */
|
. = ALIGN(8);
|
||||||
/DISCARD/ :
|
PROVIDE ( end = . );
|
||||||
{
|
PROVIDE ( _end = . );
|
||||||
libc.a ( * )
|
. = . + _Min_Heap_Size;
|
||||||
libm.a ( * )
|
. = . + _Min_Stack_Size;
|
||||||
libgcc.a ( * )
|
. = ALIGN(8);
|
||||||
}
|
} >DTCMRAM
|
||||||
|
|
||||||
.ARM.attributes 0 : { *(.ARM.attributes) }
|
|
||||||
}
|
|
||||||
|
/* Remove information from the standard libraries */
|
||||||
|
/DISCARD/ :
|
||||||
|
{
|
||||||
|
libc.a ( * )
|
||||||
|
libm.a ( * )
|
||||||
|
libgcc.a ( * )
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user